Bitbucket 和 Jenkins,为了相互通信,我们在 Bitbucket 服务器中安装了 SSL 证书。当 Jenkins 团队过去经常弄乱他们的配置并最终更改他们的 SSL 证书时,问题就开始了,这扰乱了 Bitbucket 和 Jenkins 之间的通信。这种情况在一个月内经常发生。
我被分配了一项任务,在每次更改证书时自动安装新证书。即,检查 URL 证书和服务器密钥库中的证书,并在存在差异时提醒我们,以便我们可以导入较新的证书。
所以,这就是我所做的。我使用命令从密钥库获取了 SSL 证书
keytool -export -alias jenkins -file jenkins.der -keystore keystore.path
openssl x509 -inform der -in jenkins.der -out jenkins.crt
然后从 openssl 命令检索 SSL 证书,我假设该命令是从浏览器 URL 获取的
openssl s_client -connect jenkins:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > jenkins_new.crt
之后,当我进行比较时,文件之间存在几行差异。 SSL证书在上次导入后没有改变,那么安装的SSL和浏览器的SSL有何不同?
我想做的事情是错误的吗?
答案1
关键是,安装证书的位置不仅是一个,而是两个,因此是混乱的根源。或者根据设置,甚至两个不同的证书(但最常见的是安装在两个地方的相同证书)。
具体来说,实际上有两组证书“存储”,来自 Java(后端)的应用程序证书密钥库和来自系统/Web 服务器(前端)的证书配置。
通常,在安装新证书时,必须在两个地方都进行更新。
由于您已经向我们展示了您正在处理 Java 密钥库(例如使用命令keytool
),因此您还需要查看系统/网络服务器端。
假设前端 Web 服务器是 Apache,通常ssl.conf
或者配置使用指令( 和 )vhost
指向证书文件系统中的位置。SSLCertificateFile
SSLCertificateKeyFile
不过,假设您来自开发团队,我建议您与本地系统管理员进行友好的交谈。他们应该能够指出如何在 Web 服务器/Linux 端配置证书。
PS 请注意,Web 前端和应用程序后端可以位于同一虚拟机/服务器上,也可以位于不同的虚拟机/服务器上。