Centos

向 Java 應用程序添加根證書頒發機構

  • July 16, 2018

我在 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 應用程序。

參考

引用自:https://unix.stackexchange.com/questions/456475