温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JAVA Keytool工具怎么生成Keystore和Truststore文件

发布时间:2021-06-24 12:06:43 来源:亿速云 阅读:851 作者:chen 栏目:编程语言

本篇内容主要讲解“JAVA Keytool工具怎么生成Keystore和Truststore文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JAVA Keytool工具怎么生成Keystore和Truststore文件”吧!

Keystore可以存放除了证书、公钥外其它敏感信息,比如密码、私钥……证书可以是关联的证书或者一个证书链。证书链有客户端证书和一个或多个CA证书。

Truststore仅仅包含客户端信任的证书、公钥。它无法存放敏感信息。

一、生成含有一个私钥的keystore文件

keytool -genkeypair -alias certificatekey -keyalg RSA -validity 7 -keystore keystore.jks

上述命令执行后,我们需要输入文件加密密码、相关个人信息以及秘钥口令(秘钥口令可以与文件加密密码一致)。样例输出如下:

输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  chris
您的组织单位名称是什么?
  [Unknown]:  free
您的组织名称是什么?
  [Unknown]:  free
您所在的城市或区域名称是什么?
  [Unknown]:  city
您所在的省/市/自治区名称是什么?
  [Unknown]:  city
该单位的双字母国家/地区代码是什么?
  [Unknown]:  cn
CN=chris, OU=free, O=free, L=city, ST=city, C=cn是否正确?
  [否]:  y

输入 <certificatekey> 的密钥口令
        (如果和密钥库口令相同, 按回车):
再次输入新口令:

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

二、查看生成的keystore文件

keytool -list -v -keystore keystore.jks

上述命令执行后,我们需要输入之前设定的文件加密密码。校验成功后,命令会展示出keystore文件的内容,样例输出如下:

输入密钥库口令:
密钥库类型: jks
密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: certificatekey
创建日期: 2019-11-21
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
发布者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
序列号: 2b57a2eb
有效期为 Thu Nov 21 14:17:26 CST 2019 至 Thu Nov 28 14:17:26 CST 2019
证书指纹:
         MD5:  1F:FE:8E:D1:70:98:13:B8:06:2A:FB:7A:A6:88:D8:C4
         SHA1: 87:71:6B:37:16:0D:78:4A:48:53:70:6F:6D:ED:0C:81:5C:6D:D0:09
         SHA256: 05:06:9A:CC:69:18:C6:D1:45:FA:4C:59:38:70:69:FC:6B:4B:B2:C8:BF:9B:0A:11:9E:FA:2E:DE:48:C9:38:29
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 80 05 7D……

三、导出证书

keytool -export -alias certificatekey -keystore keystore.jks -rfc -file selfsignedcert.cer

上述命令导出证书到文件selfsignedcert.cer中,命令执行时,需要输入keystore文件加密密码。样例输出结果如下:

输入密钥库口令:
存储在文件 <selfsignedcert.cer> 中的证书

四、导入证书到truststore文件中

keytool -import -alias certificatekey -file selfsignedcert.cer  -keystore truststore.jks

上述命令执行时,要求输入truststore文件加密密码。命令执行成功后,证书selfsignedcert.cer被增加到了truststore.jks文件中。样例输出如下:

输入密钥库口令:
再次输入新口令:
所有者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
发布者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
序列号: 2b57a2eb
有效期为 Thu Nov 21 14:17:26 CST 2019 至 Thu Nov 28 14:17:26 CST 2019
证书指纹:
         MD5:  1F:FE:8E:D1:70:98:13:B8:06:2A:FB:7A:A6:88:D8:C4
         SHA1: 87:71:6B:37:16:0D:78:4A:48:53:70:6F:6D:ED:0C:81:5C:6D:D0:09
         SHA256: 05:06:9A:CC:69:18:C6:D1:45:FA:4C:59:38:70:69:FC:6B:4B:B2:C8:BF:9B:0A:11:9E:FA:2E:DE:48:C9:38:29
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 80 05 7D 67 5E 18 89 4F   95 E8 60 41 B3 C4 6C 8D  ...g^..O..`A..l.
0010: 38 90 8E 0B                                        8...
]
]

是否信任此证书? [否]:  y
证书已添加到密钥库中

五、查看生成的truststore文件

keytool -list -v -keystore truststore.jks

上述命令执行时,要求输入truststore加密密码。之后会展示truststore的相关内容,样例输出如下:

输入密钥库口令:
密钥库类型: jks
密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: certificatekey
创建日期: 2019-11-21
条目类型: trustedCertEntry

所有者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
发布者: CN=chris, OU=free, O=free, L=city, ST=city, C=cn
序列号: 2b57a2eb
有效期为 Thu Nov 21 14:17:26 CST 2019 至 Thu Nov 28 14:17:26 CST 2019
证书指纹:
         MD5:  1F:FE:8E:D1:70:98:13:B8:06:2A:FB:7A:A6:88:D8:C4
         SHA1: 87:71:6B:37:16:0D:78:4A:48:53:70:6F:6D:ED:0C:81:5C:6D:D0:09
         SHA256: 05:06:9A:CC:69:18:C6:D1:45:FA:4C:59:38:70:69:FC:6B:4B:B2:C8:BF:9B:0A:11:9E:FA:2E:DE:48:C9:38:29
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 80 05 7D 67 5E 18 89 4F   95 E8 60 41 B3 C4 6C 8D  ...g^..O..`A..l.
0010: 38 90 8E 0B                                        8...
]
]

六、Java指定keystore和truststore

-Djavax.net.ssl.keyStore=keystore.jks
-Djavax.net.ssl.keyStorePassword=******
-Djavax.net.ssl.trustStore=truststore.jks
-Djavax.net.ssl.trustStorePassword=******

上面的所有参数均为JVM启动参数,设置keystore和truststore属性。其中keystore与truststore属性均为文件的具体路径。如果没有显示指定上述属性,那么JVM默认使用$JAVA_HOME/lib/security/cacerts文件作为truststore,并读取其中的授信证书(默认密码为changeit)。

到此,相信大家对“JAVA Keytool工具怎么生成Keystore和Truststore文件”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI