Centos
向 Java 應用程序添加根證書頒發機構
我在 CentOS7 上安裝了 Jenkins,但在嘗試更新/安裝外掛時遇到 SSL 錯誤。經過一番調查,結果發現我在 Java CA 儲存中缺少根 CA 證書。
我使用該
keytool
實用程序將失去的 CA 證書添加到 Java CA 儲存中並且它有效。但是,我發現不得不篡改它很煩人。難道沒有辦法讓Java繼承系統信任的根CA證書嗎?如果是,如何?
只需將您的證書文件複製到 CentOS 7.x 上的此目錄:
$ sudo cp <cert file> /etc/pki/ca-trust/source/anchors/
將證書文件放入此目錄後,執行以下命令以使用此新添加的證書更新系統:
$ sudo update-ca-trust
Java怎麼樣
如果您查看手冊頁,
update-ca-trust
您將看到以下部分:$ man update-ca-trust
…
/etc/pki/java/cacerts
經典文件名,文件包含受 TLS 伺服器身份驗證使用信任的 CA 證書列表,採用 Java 密鑰庫文件格式,沒有不信任資訊。此文件是一個符號連結,它引用由 update-ca-trust 命令創建的合併輸出。
如果您查看該文件,您可以看到它是如何插入到
/etc/pki
目錄結構的其餘部分中的:$ ll /etc/pki/java/cacerts lrwxrwxrwx. 1 root root 40 May 2 10:41 /etc/pki/java/cacerts -> /etc/pki/ca-trust/extracted/java/cacerts
如果我們
keytool
針對它執行 Java:$ keytool -list -keystore /etc/pki/java/cacerts -storepass changeit |& head Keystore type: JKS Keystore provider: SUN Your keystore contains 155 entries hellenicacademicandresearchinstitutionsrootca2011, May 2, 2018, trustedCertEntry, Certificate fingerprint (SHA1): FE:45:65:9B:79:03:5B:98:A1:61:B5:51:2E:AC:DA:58:09:48:22:4D taiwangrca, May 2, 2018, trustedCertEntry, Certificate fingerprint (SHA1): F4:8B:11:BF:DE:AB:BE:94:54:20:71:E6:41:DE:6B:BE:88:2B:40:B9 teliasonerarootcav1, May 2, 2018, trustedCertEntry,
您可以看到上面已經提取了所有可用的證書,並且它們被自動合併到這個 Java JKS 文件中。該文件可用於系統上執行的任何 Java 應用程序。
參考