Java keytool从url / port添加服务器证书的简单方法

我有一个自签名证书的服务器,但也需要客户端证书authentication。 我有一个艰难的时间试图获得原始的CA服务器证书,所以我可以将其导入到密钥库。 任何人都有如何轻松做到这一点的build议? 谢谢。

看着如何在使用jenkins cli的时候如何信任一个证书,并且find了https://issues.jenkins-ci.org/browse/JENKINS-12629 ,它有一些配方。

这将给你的证书:

openssl s_client -connect ${HOST}:${PORT} </dev/null 

如果您只对证书部分感兴趣,请将其通过pipe道输送到:

 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' 

并redirect到一个文件:

 > ${HOST}.cert 

然后使用keytool导入它:

 keytool -import -noprompt -trustcacerts -alias ${HOST} -file ${HOST}.cert \ -keystore ${KEYSTOREFILE} -storepass ${KEYSTOREPASS} 

一气呵成:

 HOST=myhost.example.com PORT=443 KEYSTOREFILE=dest_keystore KEYSTOREPASS=changeme # get the SSL certificate openssl s_client -connect ${HOST}:${PORT} </dev/null \ | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ${HOST}.cert # create a keystore and import certificate keytool -import -noprompt -trustcacerts \ -alias ${HOST} -file ${HOST}.cert \ -keystore ${KEYSTOREFILE} -storepass ${KEYSTOREPASS} # verify we've got it. keytool -list -v -keystore ${KEYSTOREFILE} -storepass ${KEYSTOREPASS} -alias ${HOST} 

有几个方法我发现要做到这一点:

  • Firefox:添加exception – >获取证书 – >查看 – >详细信息 – >导出…
  • KeyMan( http://www.alphaworks.ibm.com/tech/keyman )您可以直接从“文件” – >“导入”菜单获取SSL证书
  • InstallCert( 由Andreas Sterbenz编码 )
     java InstallCert [主机]:[端口] 
     keytool -exportcert -keystore jssecacerts -storepass changeit -file output.cert
     keytool -importcert -keystore [DESTINATION_KEYSTORE] -file output.cert

你可以使用Firefox导出证书, 这个网站有说明。 然后你使用keytool来添加证书。