私のビルドサーバー用に自己署名証明書を生成し、キーを直接生成し、警告を表示するのに疲れたので、私のコンピュータはその証明書をグローバルに信頼したいと思います。
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
特定のアプリケーションに対して同様のトリックを分類できない場合、残りは別々の調査が必要です。