Keystore 中的 SSL 證書和瀏覽器證書不同
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 有什麼不同呢?
我想做的事情不正確嗎?
關鍵是,安裝證書的地方不僅有一個,而且有兩個,因此是混亂的根源。或者根據設置,甚至是兩個不同的證書(但最常見的是安裝在兩個地方的相同證書)。
具體來說,實際上有兩組證書“儲存”,來自 Java 的應用證書密鑰庫(後端)和來自系統/Web 伺服器(前端)的證書配置。
通常,在安裝新證書時,必須在兩個地方進行更新。
由於您已經向我們展示了您正在處理 Java 密鑰庫(例如使用
keytool
命令),因此您還需要查看系統/網路伺服器端。假設前端 Web 伺服器是 Apache,通常
ssl.conf
或者配置是使用指令(and )vhost
指向證書文件系統中的位置。SSLCertificateFile``SSLCertificateKeyFile
不過,假設您來自開發團隊,我建議您與本地系統管理員進行友好的交談。他們應該能夠指出如何在 Web 伺服器/Linux 端配置證書。
PS 請注意,Web 前端和應用程序後端可以在同一個虛擬機/伺服器上,也可以在不同的虛擬機/伺服器上。