キーストアのSSL証明書がブラウザ証明書とは異なります。

キーストアのSSL証明書がブラウザ証明書とは異なります。

BitbucketとJenkinsは、互いに通信するためにBitbucketサーバーにSSL証明書をインストールしました。問題は、Jenkinsチームが設定をめちゃくちゃにし、SSL証明書を変更してBitbucketとJenkins間の通信を妨げることから始まりました。 1ヶ月以内にこのようなことが頻繁に発生します。

新しい証明書が変更されるたびに自動的にインストールするタスクが割り当てられました。つまり、URL証明書とサーバーキーストアの証明書を確認し、違いがある場合は最新の証明書をインポートできるように警告します。

だからこれが私がしたことです。次のコマンドを使用して、キーストアからSSL証明書を受け取りました。

keytool -export -alias jenkins -file jenkins.der -keystore keystore.path

openssl x509 -inform der -in jenkins.der -out jenkins.crt

その後、SSL証明書はopensslコマンドから取得されます。ブラウザのURLから取得したとします。

openssl s_client -connect jenkins:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > jenkins_new.crt

後で比較すると、ファイル間に数行の違いがありました。 SSL証明書は最後のインポート以降変更されませんでしたが、インストールされているSSLとブラウザのSSLの違いは何ですか?

私が何を間違えようとしているのですか?

ベストアンサー1

要点は、証明書がインストールされている場所が1つではなく2つであるため、混乱が発生することです。または、設定によっては2つの異なる証明書があります(ただし、ほとんど同じ証明書が両方の場所にインストールされます)。

特に、実際には2つの証明書「ストア」セット、つまりJavaのアプリケーション証明書キーストア(バックエンド)とシステム/ Webサーバー(フロントエンド)の証明書構成があります。

通常、新しい証明書をインストールするときは、両方の場所で更新する必要があります。

Javaキーストアを扱っていることがわかったので(コマンドを使用するなどkeytool)、システム/ネットワークサーバー側も見てください。

フロントエンドWebサーバーがApacheであると仮定すると、通常は証明書ファイルシステムの場所を指すssl.confディレクティブ(および)を使用して設定されます。vhostSSLCertificateFileSSLCertificateKeyFile

しかし、あなたが開発チームから来たと仮定すると、ローカルシステム管理者との友好的な会話を共有することをお勧めします。 Webサーバー/Linux側で証明書を構成する方法を指摘できる必要があります。

PS Webフロントエンドとアプリケーションバックエンドは、同じVM /サーバー上にあっても、別のVM /サーバー上にあってもかまいません。

おすすめ記事