私のビルドサーバー用に自己署名証明書を生成し、キーを直接生成し、警告を表示するのに疲れたので、私のコンピュータはその証明書をグローバルに信頼したいと思います。
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のリストにインポートできます。
他のほとんどのコマンド(curl
takeコマンドラインスイッチなど)を使用して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;