转/keystore和c truststoree的区别

一、生成一个含有一个私钥的keystore文件
user@ae01:~$ keytool -genkey -keystore keystore -alias jetty-azkaban -keyalg RSA
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]:
What is the name of your organizational unit?
[Unknown]:
What is the name of your organization?
[Unknown]:
What is the name of your City or Locality?
[Unknown]:
What is the name of your State or Province?
[Unknown]:
What is the two-letter country code for this unit?
[Unknown]:
Is CN=azkaban, OU=Jetty, O=Aug, L=SH, ST=SH, C=86 correct?
Enter key password for &jetty-azkaban2&
(RETURN if same as keystore password):
二、验证生成的keystore文件
keytool -list -v -keystore keystore.jks
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: jetty-azkaban
Creation date: Jul 9, 2014
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=azkaban, OU=Jetty, O=Aug, L=SH, ST=SH, C=86
Issuer: CN=azkaban, OU=Jetty, O=Aug, L=SH, ST=SH, C=86
Serial number: 5f84c457
Valid from: Wed Jul 09 15:09:41 CST 2014 until: Tue Oct 07 15:09:41 CST 2014
Certificate fingerprints:
2F:D3:D9:61:0E:DD:B5:CD:96:E0:5F:C0:C5:87:54:FD
SHA1: FD:0B:B4:57:37:CE:7A:40:02:DF:43:2A:A0:2A:70:A5:AE:AE:45:51
SHA256: D5:EE:99:BF:E6:31:FC:4E:B3:B4:CD:8B:07:1D:D1:44:D0:CD:91:D8:83:15:F8:9D:D9:5E:41:E1:AA:FB:45:CB
Signature algorithm name: SHA256withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: B5 97 26 95 F0 F5 D4 9E
4C 28 84 28 D4 B0 21 90
..&.....L(.(..!.
0010: 6E A7 1E E0
*******************************************
*******************************************
三、导出凭证文件
user@ae01:~$ keytool -export -alias jetty-azkaban -keystore keystore.jks -rfc -file selfsignedcert.cer
Enter keystore password:
生成的cer文件内容如下:
user@ae01:~$ cat selfsignedcert.cer
-----BEGIN CERTIFICATE-----
MIIDTTCCAjWgAwIBAgIEX4TEVzANBgkqhkiG9w0BAQsFADBXMQswCQYDVQQGEwI4NjELMAkGA1UE
CBMCU0gxCzAJBgNVBAcTAlNIMQwwCgYDVQQKEwNBdWcxDjAMBgNVBAsTBUpldHR5MRAwDgYDVQQD
EwdhemthYmFuMB4XDTE0MDcwOTA3MDk0MVoXDTE0MTAwNzA3MDk0MVowVzELMAkGA1UEBhMCODYx
CzAJBgNVBAgTAlNIMQswCQYDVQQHEwJTSDEMMAoGA1UEChMDQXVnMQ4wDAYDVQQLEwVKZXR0eTEQ
MA4GA1UEAxMHYXprYWJhbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALtFxXjvwjfM
W10cs1f35eeswYGKghZXcIbUmGY1SiWhwsw0ZgajTPf9sXCK6wMkN83XO1JOE2x3g3BVdN51CMZ6
XvEr5cvjOn15t3vUIsWJoBi1Bk2D25fDS3GDVr8qF/ghOMcQXo+Ut6vLMVTrrNzbs7ifB6UNiPMP
gSfGJwrfoEL9cSTCmsXq4Dx1HxEcgd4+KxOgbKPHx9Q4Iv6+HV091IWGdIElmUxaWgasD7mArdmi
DvLd7kQzWWXiky0RVde/LX0Z4zH9RVtuuN7dvK433gnBIYZJeOzoo3J2gIepzwmBl3q2HHNMfDhu
paGsKYYx5vAtzSAFQmATeRf8b2kCAwEAAaMhMB8wHQYDVR0OBBYEFLWXJpXw9dSeTCiEKNSwIZBu
px7gMA0GCSqGSIb3DQEBCwUAA4IBAQCAnuL1Wkfx+bPSyPPlqysMcjTc1pvv8hDU+8V4BV1u5f/v
+etJ4gIdv9d6f4phkvBtoxEgQIq1VqONhdJrWL+J0h4W05Cy0AR/tkLA19VjhkIQvh7ZFBfJ6G/K
7JbmH0/f1oplrkQ9jMUdji7gE8OINNRynJGdgH9xd8Mm1I6+IBjUVUY7jKoVxKzkwJaH06fKUTp3
oPqmfyW7ZekzvVXQhqADEpsmZ6Hd30dmzJWkI2lwbsQNE9vf3dG7qKLDeWi78A7KZc3qtBvDUmyh
eztUpmAM/PCoO+vmCgZALkaQ1sTWORqQOsylSBY2ZDul0si+rI0nZ9Y6dTxhgFxe9QoB
-----END CERTIFICATE-----
四、导入认凭证件cer文件到truststore文件&
user@ae01:~$ keytool -import -alias certificatekey -file selfsignedcert.cer -keystore truststore.jks
Enter keystore password:
查看生成的truststore文件
user@ae01:~$ keytool -list -v -keystore truststore.jks
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: jetty-azkaban
Creation date: Jul 9, 2014
Entry type: trustedCertEntry
Owner: CN=azkaban, OU=Jetty, O=Aug, L=SH, ST=SH, C=86
Issuer: CN=azkaban, OU=Jetty, O=Aug, L=SH, ST=SH, C=86
Serial number: 5f84c457
Valid from: Wed Jul 09 15:09:41 CST 2014 until: Tue Oct 07 15:09:41 CST 2014
Certificate fingerprints:
2F:D3:D9:61:0E:DD:B5:CD:96:E0:5F:C0:C5:87:54:FD
SHA1: FD:0B:B4:57:37:CE:7A:40:02:DF:43:2A:A0:2A:70:A5:AE:AE:45:51
SHA256: D5:EE:99:BF:E6:31:FC:4E:B3:B4:CD:8B:07:1D:D1:44:D0:CD:91:D8:83:15:F8:9D:D9:5E:41:E1:AA:FB:45:CB
Signature algorithm name: SHA256withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: B5 97 26 95 F0 F5 D4 9E
4C 28 84 28 D4 B0 21 90
..&.....L(.(..!.
0010: 6E A7 1E E0
*******************************************
*******************************************
阅读(...) 评论()7236人阅读
PKI公钥基础设施
java(25)
1&SSL单向认证概念
  当客户端(服务请求方)向服务端(服务提供方)发起请求时,服务器端需要向客户端提供认证。服务端需要生成一个keystore和一个服务器密钥对儿(公钥和私钥),客户端需要生成一个truststore,然后导入服务端的公钥证书。
2&keystore以及服务器密钥对儿的生成
keytool&-genkeypair&-alias&certificatekey&-keyalg&RSA&-validity&365&-keystore&shfqkeystore.jks
这条命令会在生成keystore后接着生成一个密钥对儿。RSA是非对称密钥算法,也可以改为&keytool支持的其他密钥算法,365代表的是证书的有效期,可以自己指定,shfqkeystore.jks是keystroe的名称,也可以自己指定。打开cmd命令行,输入:
keytool&-genkeypair&-alias&certificatekey&-keyalg&RSA&-validity&365&-keystore&shfqkeystore.jks
会提示输入keystore的密码,接着会提示输入名字等信息,如下图:
补充:输入&certificatekey&的主密码,是指生成服务端证书的私钥。服务端私钥如果和keystore的相同的话,直接按回车。建议直接按回车,即服务端私钥和keystore的密码相同。如果两者的密码不相同的话在服务端tomcat&server.xml中配置完毕以后启动tomcat会报一个UnrecoverableKeyException:&Cannot&recover&key的异常(后面会介绍服务端&tomcat&server.xml&的配置的)。
keytool会把生成的keystore文件默认保存到C:\Users\lenovo路径下(用户目录下的计算机名称下)接下来生成的所有文件也都保存到此处。
3&验证新生成的keystor文件以及证书信息
可以执行下面的命令:
keytool&-list&-v&-keystore&shfqkeystore.jks
会显示出以下信息,如图:
4&导出公钥证书
下面的命令可以导出自签公钥证书:
keytool&-export&-alias&certificatekey&-keystore&shfqkeystore.jks&-rfc&-file&shfqcert.cer
其中shfqcert.cer是导出证书的名称,可以随便起个名字,shfqkeystore.jks是2中生成的keystore&文件。
执行上面的命令会要求输入shfqkeystore的密码,会显示以下信息,如下图。
5&Truststore的生成以及公钥证书的导入
把4生成的公钥证书shfqcert.cer导入到truststore中
Keytool&-import&-alias&certificatekey&-file&shfqcert.cer&-keystore&
shfqtruststore.jks
shfqcert.cer是4导出的公钥证书,shfqtruststore.jks可以随便起,是生成的truststore的文件名。这条命令首先会生成一个truststore,然后导入4生成的公钥证书shfqcert.cer。
执行keytool&-import&-alias&certificatekey&-file&shfqcert.cer&&-keystore&shfqtruststore.jks后,首先会提示输入truststore的密码,如下图:
6&验证5生成的truststore文件
keytool&-list&-v&-keystore&shfqtruststore.jks
shfqtruststore.jks是5生成的truststore文件名。
到此为止,keystore、truststore、公钥证书都已生成完毕。
7&配置服务端的tomcat
找到tomcat安装路径下的conf路径下的server.xml文件
打开server.xml,找到
&&&&&Connector&port=&8443&&protocol=&HTTP/1.1&& &SSLEnabled=&true&
&&&&&&&&&&&&&&&maxThreads=&150&&scheme=&https&&secure=&true&
&&&&&&&&&&&&&&&clientAuth=&false&&sslProtocol=&TLS&&/&
这样一段注释,在这段注释下面添加如下一段代码:
&Connector&SSLEnabled=&true&&acceptCount=&100&&clientAuth=&false&
disableUploadTimeout=&true&&
enableLookups=&false&&maxThreads=&25&
&&&&port=&8443&&keystoreFile=&D:\developTools\apache-tomcat-idm\tomcat.keystore&& keystorePass=&111111&
&&&&protocol=&org.apache.coyote.http11.Http11NioProtocol&& scheme=&https&
secure=&true&&sslProtocol=&TLS&&/&
其中clientAuth=”false”表示是SSL单向认证,即服务端认证,port=”8443”是https的访问端口,keystoreFile=&D:\developTools\apache-tomcat-idm\tomcat.keystore&是第一步中生成的keystore的保存路径,keystorePass=&111111&是第一步生成的keystore的密码。
到此服务器端已经配置完毕,为了验证是否已经配置正确,我们可以在浏览器中进行验证。首先启动tomcat,然后在浏览器地址输入栏中输入:
如果看到如下截图的一个页面则表示服务端已经配置成功了。
之所以会出现“该网站的安全证书不受信任!”的警告是因为证书是自己签发的而不是一个权威的CA机构签发的。
最后还得在hosts文件中配置自己的IP地址,把IP地址映射为一个common name,这个common name就是您在第2步中生成服务器证书时候的“您的名字与姓氏是什么?”输入的名字。
8&客户端配置
在客户端配置服务端的地址时要注意:比如&s &&
这个地址协议格式是https主机名是shifengqiang,这个shifengqiang就是在第2步中生成服务器端证书时要求输入的“您的名字与姓氏是什么?”名字。8443是https协议默认的端口。
在客户端向服务器端同步代码前面加入这样一段代码:
System.setProperty(&java.protocol.handler.pkgs&,& &com.sun.net.ssl.internal.www.protocol&);
&&&&System.setProperty(&java.protocol.handler.pkgs&,& &com.ibm.net.ssl.internal.www.protocol&);
String&trustStorePath&=&
&&&“D:\developTools\apache-tomcat-idm\shfqtruststore.jks”;
String&trustStorePassword&=&“client”;
System.setProperty(&javax.net.ssl.trustStore&,& trustStorePath);
System.setProperty(&javax.net.ssl.trustStorePassword&,& trustStorePassword);
其中trustStorePath&是truststore的路径,trustStorePassword&是truststore的密码。至此单向SSL配置完毕。
参考链接:/blog/1885356
在配置的过程中参考了网上大量的链接,有些链接没有做记录恕不一一列举。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:146243次
积分:2015
积分:2015
排名:千里之外
原创:52篇
译文:29篇
评论:41条
(1)(1)(3)(3)(4)(7)(2)(2)(1)(4)(1)(1)(9)(1)(1)(1)(1)(1)(4)(12)(3)(4)(1)(1)(1)(1)(3)(2)(1)(5)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'转载自:网络地点太多不确定源地址
我理解是公钥+私钥的统称。
公钥(证书)和私钥成对存在。通信双方各持有自己的私钥和对方的公钥。自己的私钥需密切保护,而公钥是公开给对方的。在windows下,单独存在的公钥一般是后缀为.cer的文件
A用自己的私钥对数据加密,发给B,B用A提供的公钥解密。同理B用自己的私钥对数据加密,发送给A后,A用B的公钥解开。
公钥的两个用途:
1。验证对方身份:防止其他人假冒对方发送数据给你。
私钥的两个用途:
1。表明自己身份:除非第三方有你私钥,否则无法假冒你发送数据数据给对方。
jks(java key store):
java用的存储密钥的容器。可以同时容纳n个公钥或私钥,后缀一般是.jks或者.keystore或.truststore等,千奇百怪。不管什么后缀,它就是一个容器,各个公司或机构叫法不同而已。比如把只包含&受信任的公钥&的容器存成.truststore文件等。
用jdk\bin目录下的keytool.exe对其进行查看,导入,导出,删除,修改密码等各种操作。可以对jks容器加密码,输入正确才可以操作此容器中密钥。还有一个密码的概念与上者不同,是jks中存储着的私钥的密码,通常是绝密的。
和jks功能相同但文件格式不同,pfx是浏览器用的。
可以用一些工具程序把pfx转化成jks格式供java程序使用(如银行只提供了pfx,但是我们想用httpclient模拟浏览器自动访问时)。据说IE导出的pfx格式不标准,转化jks时往往报错,可以尝试用Netscape Navigator导入再导出,然后再转化。碰到过这样的情况。
常见的几种https系统的访问。经https协议的数据经过加密传输,防止第三方监听,冒充和篡改。
1.不需要用户做任何操作,比如
这是因为此公钥是合法的(公钥是可信任的机构颁发,和实际域名吻合,而且没有到期)。用IE访问时空白处点右键可以查看公钥信息。
2.https的页面会弹出公钥确认提示
公钥不合法(不是可信任的机构颁发,和实际域名不吻合,已到期),但用户点“是”即表示忽略危险,继续访问。
3.需要往浏览器倒入一个文件才可访问的
一般是银行在线交易等特别需要安全的场合,站方(银行)需要验证访客身份(如要确认必须是已注册的网银商户),需要在浏览器中导入含有访客私钥的pfx文件。
在银行没有提供jks文件的情况下对帐,需要自己生成jks
对于1,2类https网站,如果java程序访问此地址时在jre默认的信任库中找不到对方证书的颁发机构,则会抛出安全方面的异常。所以要将站方公钥存进一个jks,并在环境变量中设定,表明信任此库中的公钥,才可以正常访问。
我是用现成的make_jks的工具类在程序中读取地址,程序自动抓取出银行公钥并存进一个jks文件。
在浏览器中查看站方公钥时,把公钥导出(一般是cer后缀),然后用keytool.exe手工将此cer导入一个jks或许也可以?没试过。
以上1,2类https网站,仅仅是用到了公钥的“验证对方身份”功能。对于第3种https网站,也可以找到现成的程序把pfx直接转成jks。既然动用了pfx,一般是把公钥的两个用途和私钥的两个用途都用起来。
本文已收录于以下专栏:
相关文章推荐
1,找到你的jks文件,进入终端,cd到你的文件夹,输入命令:
keytool -list -keystore your.jks 或者
keytool -list -keystor...
JKS文件是使用keytool生成的keystore文件,存放私钥和证书。但是我们用keytool的时候,私钥并没有单独生成出来。这个不利于我们后期的一些扩展工作。所以,我们需要把私钥从keytool...
生成jks签名文件
选择Build & Generate Signed APK…
选择项目app & Next
选择Create new…
选择签名文件的路径,这些信...
一、Android Studio签名打包
第一步 创建签名文件
第二步 填写签名参数
第三步 选择构建类型
第四步 查看生成第a...
jks是在studio里面生成的签名证书,
keystore是eclipse里面生成的.
最近公司突然提出要用https了 原因是对苹果连接的接口只允许https通过了,哎无处不坑爹(仔细想下也是应该的毕竟安全重要)
首先我们要重新编译nginx使其能支持ssl:
这是我编译的nginx的...
今天看了慕课网的微信朋友圈分享课程,自己动手做时却发现点击按钮总出现闪退,分享结果也返回true了,可就是闪退。看了评论发现好多同学都在问这个问题。大致的原因都在说签名不一致的问题。多方百度,我最后终...
Android应用开发的时候会经常使用到第三方SDK,例如地图、推送、支付以及分享等。而这些第三方服务SDK为了应用不被滥用都会有签名验证机制。我们通过上传Android应用的签名来在服务端配置以验证...
keystore 介绍
博客分类: 
Keytool 是一个有效的安全钥匙和证书的管理工具. 
Java 中的 keytool.exe (位于 JDK\Bi...
一、HTTPS 单向认证
1. 给服务器生成密钥
keytool -genkeypair -alias skxy -keyalg RSA -validity 3650 -keypa...
他的最新文章
讲师:韦玮
讲师:陈守元
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)keytool生成keystore&truststore&证书以及SSL单向认证在服务端tomcat和客户端的配置
1SSL单向认证概念
  当客户端(服务请求方)向服务端(服务提供方)发起请求时,服务器端需要向客户端提供认证。服务端需要生成一个keystore和一个服务器密钥对儿(公钥和私钥),客户端需要生成一个truststore,然后导入服务端的公钥证书。
2keystore以及服务器密钥对儿的生成
keytool-genkeypair-aliascertificatekey-keyalgRSA-validity365-keystoreshfqkeystore.jks
这条命令会在生成keystore后接着生成一个密钥对儿。RSA是非对称密钥算法,也可以改为keytool支持的其他密钥算法,365代表的是证书的有效期,可以自己指定,shfqkeystore.jks是keystroe的名称,也可以自己指定。打开cmd命令行,输入:
keytool-genkeypair-aliascertificatekey-keyalgRSA-validity365-keystoreshfqkeystore.jks
会提示输入keystore的密码,接着会提示输入名字等信息,如下图:
补充:输入&certificatekey&的主密码,是指生成服务端证书的私钥。服务端私钥如果和keystore的相同的话,直接按回车。建议直接按回车,即服务端私钥和keystore的密码相同。如果两者的密码不相同的话在服务端tomcatserver.xml中配置完毕以后启动tomcat会报一个UnrecoverableKeyException:Cannotrecoverkey的异常(后面会介绍服务端tomcatserver.xml的配置的)。
keytool会把生成的keystore文件默认保存到C:Userslenovo路径下(用户目录下的计算机名称下)接下来生成的所有文件也都保存到此处。
3验证新生成的keystor文件以及证书信息
可以执行下面的命令:
keytool-list-v-keystoreshfqkeystore.jks
会显示出以下信息,如图:
4导出公钥证书
下面的命令可以导出自签公钥证书:
keytool-export-aliascertificatekey-keystoreshfqkeystore.jks-rfc-fileshfqcert.cer
其中shfqcert.cer是导出证书的名称,可以随便起个名字,shfqkeystore.jks是2中生成的keystore文件。
执行上面的命令会要求输入shfqkeystore的密码,会显示以下信息,如下图。
5Truststore的生成以及公钥证书的导入
把4生成的公钥证书shfqcert.cer导入到truststore中
Keytool-import-aliascertificatekey-fileshfqcert.cer-keystore
shfqtruststore.jks
shfqcert.cer是4导出的公钥证书,shfqtruststore.jks可以随便起,是生成的truststore的文件名。这条命令首先会生成一个truststore,然后导入4生成的公钥证书shfqcert.cer。
执行keytool-import-aliascertificatekey-fileshfqcert.cer-keystoreshfqtruststore.jks后,首先会提示输入truststore的密码,如下图:
6验证5生成的truststore文件
keytool-list-v-keystoreshfqtruststore.jks
shfqtruststore.jks是5生成的truststore文件名。
到此为止,keystore、truststore、公钥证书都已生成完毕。
7配置服务端的tomcat
找到tomcat安装路径下的conf路径下的server.xml文件
打开server.xml,找到
&Connectorport="8443"protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150"scheme="https"secure="true"
clientAuth="false"sslProtocol="TLS"/&
这样一段注释,在这段注释下面添加如下一段代码:
&ConnectorSSLEnabled="true"acceptCount="100"clientAuth="false"
disableUploadTimeout="true"
enableLookups="false"maxThreads="25"
port="8443"keystoreFile="D:developToolsapache-tomcat-idmtomcat.keystore" keystorePass="111111"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true"sslProtocol="TLS"/&
其中clientAuth=”false”表示是SSL单向认证,即服务端认证,port=”8443”是https的访问端口,keystoreFile="D:developToolsapache-tomcat-idmtomcat.keystore"是第一步中生成的keystore的保存路径,keystorePass="111111"是第一步生成的keystore的密码。
到此服务器端已经配置完毕,为了验证是否已经配置正确,我们可以在浏览器中进行验证。首先启动tomcat,然后在浏览器地址输入栏中输入:
如果看到如下截图的一个页面则表示服务端已经配置成功了。
之所以会出现“该网站的安全证书不受信任!”的警告是因为证书是自己签发的而不是一个权威的CA机构签发的。
最后还得在hosts文件中配置自己的IP地址,把IP地址映射为一个common name,这个common name就是您在第2步中生成服务器证书时候的“您的名字与姓氏是什么?”输入的名字。
8客户端配置
在客户端配置服务端的地址时要注意:比如s
这个地址协议格式是https主机名是shifengqiang,这个shifengqiang就是在第2步中生成服务器端证书时要求输入的“您的名字与姓氏是什么?”名字。8443是https协议默认的端口。
在客户端向服务器端同步代码前面加入这样一段代码:
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("java.protocol.handler.pkgs", "com.ibm.net.ssl.internal.www.protocol");
StringtrustStorePath=
“D:developToolsapache-tomcat-idmshfqtruststore.jks”;
StringtrustStorePassword=“client”;
System.setProperty("javax.net.ssl.trustStore", trustStorePath);
System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword);
其中trustStorePath是truststore的路径,trustStorePassword是truststore的密码。至此单向SSL配置完毕。
参考链接:/blog/1885356
在配置的过程中参考了网上大量的链接,有些链接没有做记录恕不一一列举。
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.033 (s). 10 q(s)

我要回帖

更多关于 truststorefile 的文章

 

随机推荐