web-dev-qa-db-ja.com

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

ビルドサーバー用の自己署名証明書を生成しました。自分でキーを作成し、警告が表示されてうんざりしているので、自分のマシンの証明書をグローバルに信頼したいと思います。

私はUbuntu 12.04を使用しています。ブラウザー(Google Chrome)、CLIユーティリティ(wget、curl)、およびプログラミング言語(Python、Javaなど)が https:// mysite .com 質問せずに?

102
Naftuli Kay

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

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

それはさておき、例としてDebianを挙げます。 ca-certificatesパッケージをインストールします。

apt-get install ca-certificates

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

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

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

dpkg-reconfigure ca-certificates

askオプションを選択し、証明書までスクロールして、含めるものとしてマークし、[ok]を選択します。

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

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

Firefoxでは、ディスク上の証明書を参照し、それを証明書ファイルとして認識して、それをルートCAリストにインポートできます。

curlなどの他のほとんどのコマンドは、CAをポイントするために使用できるコマンドラインスイッチを取得します。

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

またはSSL検証を完全に削除します

 curl --insecure https://...

ca-certificatesのようなトリックで特定のアプリケーション用に並べ替えられない場合、残りは個別に調査する必要があります。

97
Drav Sloan

非インタラクティブなアプローチ

非インタラクティブなコンテキスト(シェフのレシピなど)で使用するには、次のシーケンスを使用できます。

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/apt-getによって追加されたファイル用に予約されているため、この方法は@Dravの方法よりも推奨されます。

62
oDDsKooL

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

詳細については、man update-ca-trustをご覧ください。/etcまたは/ usrを使用するかどうか。

8
user7610

Centos:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
5
dragonfly

非対話型アプローチ(18年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;
5
3ronco