新しい 認証局 を作成し、手動でブラウザーにCAチェーンをインポートし、ブラウザーが仲介者によって署名された新しい証明書を信頼できることを確認した後、CA証明書チェーン(pemおよびcrt形式)を次のディレクトリにあるUbuntuサーバー:
ただし、これが行われると、wget/curl/JavaなどのUbuntuマシン上のアプリケーションは、新しい証明書を使用する接続をまだ信頼しません。 another post によると、証明書がある各マシンでdpkg-reconfigure -f noninteractive ca-certificates
またはupdate-ca-certificates
を実行する必要があります。これらのコマンドが機能しないだけでなく、何千ものサーバーに対してコマンドを実行することは現実的ではありません。構成管理にはCFEngineを使用していますが、私が知る限り、この種の機能を備えているようには見えません。
数千のマシンに対して機能する方法で信頼できるCA証明書を非対話的に更新するようにUbuntuをスクリプト化する方法はありますか?
私はBillThorが言及したすべてに同意しますが、update-ca-certificatesが面倒すぎて怠惰になりすぎて、実際に必要なものを更新しないように見えるため、証明書ストアを完全に再構築する必要がある場合があることを付け加えます。
rm -f /usr/local/share/ca-certificates/certificate.crt
# --fresh is needed to remove symlinks to no-longer-present certificates
update-ca-certificates --fresh
また、update-ca-certificatesが完了すると、/etc/ssl/certs/*.pem
ファイルが/usr/local/share/ca-certificates/
または/usr/share/ca-certificates/
のそれぞれの証明書にシンボリックリンクされているはずです。 BillThorが述べたように、名前として指紋を含むファイルへのシンボリックリンクもあります。これは349f2832.0
に似ています。
Ls -lはこれを確認できます。
--snip--
lrwxrwxrwx 1 root root 72 Feb 6 2014 Security_Communication_EV_RootCA1.pem -> /usr/share/ca-certificates/mozilla/Security_Communication_EV_RootCA1.crt
lrwxrwxrwx 1 root root 69 Mar 25 2014 Security_Communication_RootCA2.pem -> /usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt
lrwxrwxrwx 1 root root 69 Feb 6 2014 Security_Communication_Root_CA.pem -> /usr/share/ca-certificates/mozilla/Security_Communication_Root_CA.crt
lrwxrwxrwx 1 root root 61 Feb 6 2014 Sonera_Class_1_Root_CA.pem -> /usr/share/ca-certificates/mozilla/Sonera_Class_1_Root_CA.crt
--snip--
また、*。crtと* .pemは同じファイルであることに注意してください。つまり、元の.crtは.pem形式でなければなりません。
.pem形式のファイルは次のようになります。
-----BEGIN CERTIFICATE-----
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB
gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk
--snip--
IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy
i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ
O+7ETPTsJ3xCwnR8gooJybQDJbw=
-----END CERTIFICATE-----
証明書に対してopensslを実行することにより、証明書のインストールをテストできます:openssl x509 -in /etc/ssl/certs/[certname].pem -noout -text
およびopenssl x509 -in /usr/local/share/ca-certificates/[certname].pem -noout -text
(もちろん[certname]を置き換えます)
証明書に関する広範な情報が表示され、両方が一致しているはずです(シンボリックリンクがあるため、同じファイルである必要があります)。
それらが一致しない場合は、update-ca-certificates --fresh
を再実行する必要があります
有用な情報がまったく出力されない場合は、証明書を確認して、それが有効なPEM形式であることを確認する必要があります。
[〜#〜] edit [〜#〜]:BillThorは、これはJavaでは機能しないと述べましたが、少なくともdebianではJavaの証明書ストアも最新の状態に保たれているようですupdate-ca-certificatesツール。おそらくAdobe Airアプリを実行しているWine以外に、代替の証明書ストアを使用するLinux上の他のものについては知りません。
update-ca-certificates
のようなツールは、証明書のハッシュ値と一致するシンボリックリンクによって証明書がリンクされていることを確認します。 cfengine
を使用して証明書を展開する場合、証明書をコピーした後にシンボリックリンクを追加する手順を含めます。これは、証明書がインストールされたときにプログラムを実行するよりも簡単に定義できることがわかりました。
Javaは、インストールディレクトリ内にあるcacerts
ファイルを使用します。新しいcacerts
ファイルをインストールするか、証明書をcacerts
ファイルにインポートする必要があります。または、既存のjssecacerts
ファイルの横にcacerts
ファイルをインストールすることもできます。どちらのファイルでも、信頼するすべての証明書がファイルに含まれていることを確認する必要があります。これはデフォルトセットのサブセットである場合があります。最も簡単で最も安定したオプションは、デフォルトのJavaバージョンにファイルをインストールすることです。cacerts
の証明書は、さまざまな認証局がそのパブリックトラスト証明書を更新するときに定期的に更新されるため、このファイルを長期間維持する必要があります。
使用しているブラウザーによっては、証明書を信頼できる証明書としてブラウザーのキーストアにインストールする必要がある場合があります。