信頼できるリストに自己署名証明書を追加する

信頼できるリストに自己署名証明書を追加する

私のビルドサーバー用に自己署名証明書を生成し、キーを直接生成し、警告を表示するのに疲れたので、私のコンピュータはその証明書をグローバルに信頼したいと思います。

Ubuntu 12.04を使用しています。ブラウザ(Google Chrome)、CLIユーティリティ(wget、カール)、プログラミング言語(Python、Javaなど)がhttps://example.com質問なしで接続を信頼するように証明書を取得し、グローバルに信頼するにはどうすればよいですか?

答え1

これに対する簡単な答えは、ほとんどすべてのアプリケーションがこれを異なる方法で処理することです。

さらに、OpenSSLとGNUTLS(署名付き証明書処理に最も広く使用されている証明書処理ライブラリ)が証明書処理で異なる動作をするという事実は問題を複雑にします。また、オペレーティングシステムは、ほとんどのWebサイトで使用される「ルートCA」を利用するために、さまざまなメカニズムを利用しています。

他にも Debian を例に挙げてみましょう。インストールca-certificatesパッケージ:

apt-get install ca-certificates

次に、信頼できないCA証明書(CSRに署名するために使用された証明書)の公開部分をCA証明書ディレクトリ(ルートディレクトリ)にコピーします。

cp cacert.crt /usr/share/ca-certificates

メモ:証明書.crtを収集するには拡張機能が必要です。

その後、証明書を含むディレクトリを再構築してルートとして実行します。

dpkg-reconfigure ca-certificates

そのaskオプションを選択した状態で、証明書までスクロールして「埋め込み」とマークし、「OK」を選択します。

ほとんどのブラウザは独自のCAデータベースを使用しているため、certutil同様のツール(Debianのパッケージで提供libnss3-tools)を使用してコンテンツを変更する必要があります。たとえば、Chrome では次のことを実行できます。

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file

Firefoxを使用すると、ディスク上の証明書を見つけて証明書ファイルとして認識し、それをルートCAのリストにインポートできます。

他のほとんどのコマンド(curltakeコマンドラインスイッチなど)を使用してCAを指定できます。

 curl --cacert  /path/to/CA/cert.file https://...

またはSSL検証を完全に放棄する

 curl --insecure https://...

ca-certificates特定のアプリケーションに対して同様のトリックを分類できない場合、残りは別々の調査が必要です。

答え2

非対話型方式

非対話型環境(シェフのレシピなど)で使用するには、次の順序を使用できます。

sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
  • Debian 5/6 と Ubuntu 14.04 でテストして作業しています。
  • 詳細については、次を参照してください。man update-ca-certificates

/usr/share/この方法は通常OS /追加ファイル用に予約されているため、@Dravの方法よりも優れていますapt-get

答え3

Fedoraの帽子

Fedora 23では、.pemまたは.derファイルを追加し/etc/pki/ca-trust/source/anchors/ますsudo update-ca-trust extract

man update-ca-trust/ etcまたはusrを使用するかどうかなどの詳細については、参考資料を参照してください。

アルプス山脈

.pemをに追加し/usr/local/share/ca-certificates/て実行しますupdate-ca-certificates

このアルパインツールのソースは次のとおりです。https://github.com/alpinelinux/ca-certificates/blob/898ab81b51730dcd175069956d6e792385c9f457/update-ca.c#L18

答え4

非対話型方法(2018年10月)
最新のDebianベースのシステムの場合

ホストストアに証明書を追加することと、アプリケーションが実際に証明書を利用できるようにすることには違いがあります。リポジトリ内の既存の証明書が必ずしも使用されるわけではありません(たとえこれが間違ったパッケージがまだ多いことを認めなければなりません)。証明書の使用を検討し、単に拒否するパッケージを設定すると混乱する可能性
があります。/etc/ca-certificate.conf追加しましたが、エラーはありません。update-ca-certificates証明書を/etc/ca-certificate.conf追加するか、またはに追加して明示的に(コピーだけでなく有効化)通知する必要があります/etc/ca-certificate/update.d

CERT=mycert.crt
cp /mypath/to/$CERT /usr/share/ca-certificates/$CERT
    # notice the + sign which tells to activate the cert!!!
echo "+$CERT" >/etc/ca-certificates/update.d/activate_my_cert
dpkg-reconfigure ca-certificates;

別のパスを使用して証明書を暗黙的に信頼する方法があるため、混乱しています。

CERT=mycert.crt
cp /mypath/to/$CERT /usr/local/share/ca-certificates/$CERT
update-ca-certificates;

関連情報