web-dev-qa-db-ja.com

ルート認証局をJavaアプリケーションに追加する

CentOS7にJenkinsをインストールしましたが、プラグインを更新/インストールしようとするとSSLエラーが発生しました。調査の結果、Java CAストアにルートCA証明書が見つからないことがわかりました。

keytoolユーティリティを使用して、不足しているCA証明書をJava CAストアに追加しましたが、機能しましたが、改ざんしなければならないのは面倒です。

Javaがシステムによって信頼されているルートCA証明書を継承する方法はありませんか?はいの場合、どのようにですか?

6
Ezwig

証明書ファイルを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

そして、それに対してJava keytoolを実行すると:

$ 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システムで実行されているアプリケーション。

参考文献

7
slm