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

新手上路,请多包涵

我有一台带有自签名证书的服务器,但也需要客户端证书身份验证。我在尝试获取原始 CA 服务器证书时遇到了困难,因此我可以将其导入密钥库。有人对如何轻松做到这一点有一些建议吗?

原文由 wuntee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 343
1 个回答

正在研究如何在使用 jenkins cli 时信任证书,并发现 https://issues.jenkins-ci.org/browse/JENKINS-12629 其中有一些方法。

这将为您提供证书:

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

如果您只对证书部分感兴趣,请通过管道将其剪切到:

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

并重定向到一个文件:

 > ${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}

原文由 dnozay 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题