java将SSL证书导入系统密钥库
Posted Bourbon.Tian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java将SSL证书导入系统密钥库相关的知识,希望对你有一定的参考价值。
之前安装JIRA和Confluence,配置了SSL证书之后遇到应用程序链接的问题:
SSL证书不被信任,导致JIRA和Confluence无法关联。
尝试过很多办法无果之后打算放弃。
最终还是放弃了......
你以为这篇博客已经结束了?
其实它并没有,我只是想凑个字数,让文章看起来饱满一些。
因为解决的办法我已经找到了,而且很简单。
———————————下面开始敲黑板,划重点—————————————
1.登录服务器,将InstallCert.java下载到本地,并通过java进行编译:
# git clone https://github.com/escline/InstallCert.git # javac InstallCert.git
2.访问服务器,并检索证书,格式为:
java InstallCert [域名]:[端口]
# java InstallCert www.test.abcd.com:443 Loading KeyStore /usr/local/jdk1.8.0_161/jre/lib/security/cacerts... Opening connection to www.test.abcd.com:443... Starting SSL handshake... ....... Added certificate to keystore \'jssecacerts\' using alias \'www.test.abcd.com-1\'
3. 从创建的jssecacerts密钥库中提取证书,格式为:
keytool -exportcert -alias [域名]-1 -keystore jssecacerts -storepass changeit -file [域名].cer
# keytool -exportcert -alias www.test.abcd.com-1 -keystore jssecacerts -storepass changeit -file www.test.abcd.com. Certificate stored in file <www.test.abcd.com.cer>
4. 将证书导入到系统密钥库中,格式为:
keytool -importcert -alias [域名] -keystore [系统密钥库路径] -storepass changeit -file [域名] .cer
# keytool -importcert -alias www.test.abcd.com -keystore /usr/local/jdk1.8.0_161/jre/lib/security/cacerts -storepass changeit -file www.test.abcd.com.cer ...... Owner ...... 输入yes Trust this certificate? [no]: yes Certificate was added to keystore
注意:如果在导入证书时遇到类似如下的报错,
keytool 错误: java.lang.Exception: 证书未导入, 别名 <www.test.abcd.com> 已经存在
怕是玩不下去了......
因为第一次遇到这个问题,所以我也不知道怎么办。
不妨试试“keytool --help”,结果让我看到了-delete 参数,仿佛看到了一丝希望。
于是我又试了一下 “keytool -delete --help”,找到了-alias,这时我会心的一笑,似乎明白了什么,既然可以导入,那就一定可以删除。
# keytool -delete -alias www.test.abcd.com -keystore /usr/local/jdk1.8.0_161/jre/lib/security/cacerts -storepass changeit
没有输出?没有输出就是最好的输出,再次尝试导入命令:
# keytool -importcert -alias www.test.abcd.com -keystore /usr/local/jdk1.8.0_161/jre/lib/security/cacerts -storepass changeit -file www.test.abcd.com.cer
成功了!JIRA和Confluence操作一样。
5.最后,不要忘记重启连个服务。登录页面再次查看:
可以说是很完美了~
以上是关于java将SSL证书导入系统密钥库的主要内容,如果未能解决你的问题,请参考以下文章
java Java CLI应用程序的代码,用于将主机名/端口的SSL / TLS证书安装到Java的密钥库中
以编程方式访问 java 密钥库以创建 SSLSocketFactory