1、以管理员身份,打开CMD命令窗口,输入如下命令,生成证书:

Microsoft Windows [版本 10.0.17134.523]
(c) 2018 Microsoft Corporation。保留所有权利。

C:\Users\lenovo>keytool -genkey -alias caskeystore -keypass 123456 -keyalg RSA -keystore thekeystore
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  liuhq
您的组织单位名称是什么?
  [Unknown]:  dahua
您的组织名称是什么?
  [Unknown]:  xadhsd
您所在的城市或区域名称是什么?
  [Unknown]:  xiaan
您所在的省/市/自治区名称是什么?
  [Unknown]:  shaanxi
该单位的双字母国家/地区代码是什么?
  [Unknown]:  cn
CN=liuhq, OU=dahua, O=xadhsd, L=xiaan, ST=shaanxi, C=cn是否正确?
  [否]:  y


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

2、输入如下命令,导出证书:

C:\Users\lenovo>keytool -export -alias caskeystore -keystore thekeystore -rfc -file cas.crt
输入密钥库口令:
存储在文件 <cas.crt> 中的证书

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

3、输入如下命令,将证书导入JRE:(注意:JAVA_HOME不能有空格)

C:\Users\lenovo>keytool -import -alias caskeystore -keystore %JAVA_HOME%\jre\lib\security\cacerts -file cas.crt -trustcacerts -storepass changeit
所有者: CN=liuhq, OU=dahua, O=xadhsd, L=xiaan, ST=shaanxi, C=cn
发布者: CN=liuhq, OU=dahua, O=xadhsd, L=xiaan, ST=shaanxi, C=cn
序列号: 207b3297
有效期为 Thu Jan 31 13:13:45 CST 2019 至 Wed May 01 13:13:45 CST 2019
证书指纹:
         MD5:  9E:30:D5:C8:AA:CD:11:A1:BF:BF:76:9D:AE:27:1F:06
         SHA1: 4F:07:21:CA:8C:37:35:66:91:DF:B7:DA:87:31:42:03:CC:29:9B:76
         SHA256: CB:37:43:6F:FB:DF:94:57:13:4C:EB:A8:B2:A3:C4:A6:D7:F8:42:1A:9F:B2:B6:97:92:F5:9A:01:1C:30:00:7C
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 8D D1 B7 5C 68 EB 10 F3   9A B6 3D 5E 17 98 C9 24  ...\h.....=^...$
0010: FB 8C F3 7A                                        ...z
]
]

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

C:\Users\lenovo>

 

注意:

1、出现以下错误是因为已经生成过一次证书,别名 <caskeystore> 已经存在。

C:\Users\lenovo>keytool -genkey -alias caskeystore -keypass 123456 -keyalg RSA -keystore thekeystore
输入密钥库口令:
keytool 错误: java.lang.Exception: 未生成密钥对, 别名 <caskeystore> 已经存在

解决办法:删除caskeystore即可

2、出现以下错误是因为已经导入过一次证书,别名 <caskeystore> 已经存在。

C:\Users\lenovo>keytool -import -alias caskeystore -keystore %JAVA_HOME%\jre\lib\security\cacerts -file cas.crt -trustcacerts -storepass changeit
keytool 错误: java.lang.Exception: 证书未导入, 别名 <caskeystore> 已经存在

解决办法:执行以下命令:

keytool -delete -alias caskeystore -keystore %JAVA_HOME%\jre\lib\security\cacerts -storepass changeit

https://stackoverflow.com/questions/26537987/java-security-signatureexception-signature-does-not-match

参考:

https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html#CHDBGFHE

 

--------------------------------------------

四、配置Hosts文件

127.0.0.1    cas.server.com

五、证书生成

1、使用java自带keytool创建本地密钥库

keytool -genkey -alias cas.server.com -keyalg RSA -keystore D:/xadhsd/cas/casServer.keystore


keytool 错误: java.lang.Exception: 未生成密钥对, 别名 <cas.server.com> 已经存在
删除当前目录下的证书

changeit

changeit

cas.server.com

wusong

yanfazu

beijing

dongcheng

zh

y

changeit

changeit

2、把密钥库导出成证书文件

keytool -export -alias cas.server.com -keystore casServer.keystore -file casServer.crt -storepass changeit

keytool -export -alias cas.server.com -keystore D:/xadhsd/cas/casServer.keystore -file D:/xadhsd/cas/casServer.crt -storepass changeit

3、查看证书

keytool -printcert -file casServer.crt

4、将创建过的证书导入到java证书库

进入caserts目录再操作

cd C:\Program\Java\jre1.8.0_171\lib\security

keytool -import -keystore cacerts -file "C:\Windows\System32\casServer.crt" -alias cas.server.com

keytool -import -keystore cacerts -file D:/xadhsd/cas/casServer.crt -alias cas.server.com


test:
keytool -import -keystore cacerts -file "C:\Windows\System32\casServer.crt" -alias cas.server.com -trustcacerts -storepass changeit

keytool -import -keystore cacerts -file "C:\Windows\System32\casServer.cer" -alias cas.server.com -trustcacerts -storepass changeit

keytool -import -keystore cacerts -file "C:\Windows\System32\casServer.crt" -alias app1.com

(注意:
如果出现:keytool 错误: java.lang.Exception: 证书未导入, 别名 <cas.server.com> 已经存在

运行命令:keytool -delete -alias cas.server.com -keystore cacerts -storepass changeit

重新执行:keytool -import -keystore cacerts -file "C:\Windows\System32\casServer.crt" -alias cas.server.com

是否信任此证书? [否]:  y

5. 查看JDK证书内容

keytool -list -v -keystore cacerts -alias cas.server.com

 

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐