Linuxで信頼されたルート証明書を追加する方法

Linux の信頼ストアに証明書を追加するプロセス全体は、特に証明書ファイルやコマンドラインの操作に慣れていない場合は、少し複雑に思えるかもしれません。この操作を行う主な理由は、curlSSL certificate problem: unable to get local issuer certificateやブラウザでサイトにアクセスしようとした際にエラーが発生し、サーバーが自己署名証明書または内部 CA 証明書を使用していることが分かっている場合です。Linux アプリは中央の信頼ストアに依存していますが、Chrome や Firefox などのブラウザは独自の信頼設定を保持しているため、システムストアに追加した後でも、一部のサイトでは警告が表示されるため、これは少し面倒です。このガイドでは、これらのルート CA 証明書を Linux の信頼ストアに追加する方法と、ブラウザがそれらを「信頼」するようにする方法について説明します。

Linux の信頼ストアにルート証明書をインストールする方法

証明書ファイルとは何ですか?

まず、証明書がPEM形式(.CRTまたは.PEMファイル)であることを確認してください。Linuxでは、インポートが簡単で、先頭が で始まるため、一般的にPEMで動作します。証明書がDER形式(バイナリ)の場合は、 OpenSSLを—-BEGIN CERTIFICATE—使用して変換する必要があります。Linuxでのコマンドは次のとおりです。

$ openssl x509 -in my_trusted_sub_ca.der -inform der -out my_trusted_sub_ca.cer

これで、追加可能なPEMファイルが作成されます。多数のCAを扱っている場合も同様で、まずすべてを変換してください。その後、新しい証明書を信頼できるディレクトリにコピーしてください。

Debian ベースのディストリビューション (Ubuntu、Mint、Kali) に CA ルート証明書を追加する

これは最も一般的なシナリオです。Linuxでは、通常/etc/ssl/certs/に中央保存場所があるためです。ただし、新しい証明書は/usr/local/share/ca-certificates/にコピーする必要があります。基本的な手順は、.crtファイルをそこにコピーし、updateコマンドを実行することです。ターミナルで以下を実行します。

$ sudo cp my_trusted_root_ca.crt /usr/local/share/ca-certificates/
$ sudo update-ca-certificates -v

簡単な注意点:update-ca-certificatesコマンドが「コマンドが見つかりません」というエラーをスローする場合は、次のコマンドでまずca-certificatesパッケージをインストールする必要があります。

$ sudo apt-get install -y ca-certificates

完了すると、システムは証明書を認識し、信頼するはずです。アップデートを実行すると、「1件追加、0件削除」のようなメッセージが表示されます。設定によっては動作が不安定な場合があり、正常に動作させるには再起動または再ログインが必要になる場合があります。

別の方法: CA証明書を再構成する

GUI を好む場合、または再構成を実行したい場合は、次の操作を実行できます。

$ sudo dpkg-reconfigure ca-certificates

信頼されたCAを有効化または無効化するためのダイアログがポップアップ表示され、ストアが更新されます。自動ではありませんが、毎回手動でファイルをコピーすることなく複数のCA証明書を管理したい場合に適しています。

証明書が信頼されているかどうかを確認する

Linux が追加した CA を信頼しているかどうかを確認するには、次のコマンドを実行します。

$ openssl verify my_trusted_root_ca.crt

すべて問題がなければOKメッセージが表示されます。そうでない場合は、 のようなエラーが表示されますunable to get local issuer certificate。サイトの信頼関係が機能していることを確認するには、curl でテストしてください。

$ curl -I https://yourdomain.local

SSLエラーなしでヘッダー情報が返されるか確認してください。CAを追加した後でも、ブラウザがデフォルトでLinuxトラストストアを使用していないためにエラーが発生する場合があります。その場合は、ブラウザ固有のトラストストアを更新する必要があります。

ChromeとFirefoxに信頼できるCA証明書を追加する

ブラウザはシステムの信頼ストアを無視することが多いため、手動で設定する必要があります。Firefoxは独自の証明書データベース(cert8.db(旧バージョン)またはcert9.db(最新バージョン))を保持しています。Chrome、Chromium、その他のChromiumベースのブラウザも、Linuxの信頼設定を自動的には尊重しません。

Firefox の場合は、libnss3-toolsパッケージからcertutilツールをインストールします。

$ sudo apt install libnss3-tools

次に、このスクリプトを実行して、FirefoxのストアにCAを追加します。<code>my_rusted_root_ca.crtと</code>をMy Root CA実際のファイル名に置き換えてください。

#!/bin/bash certfile="my_rusted_root_ca.crt" certname="My Root CA" for certDB in $(find ~/ -name "cert8.db") do certdir=$(dirname ${certDB}) certutil -A -n "${certname}" -t "TCu, Cu, Tu" -i ${certfile} -d dbm:${certdir} done for certDB in $(find ~/ -name "cert9.db") do certdir=$(dirname ${certDB}) certutil -A -n "${certname}" -t "TCu, Cu, Tu" -i ${certfile} -d sql:${certdir} done

これにより、ルートCAがFirefoxの信頼済みストアに追加されます。動作を確認するには、Firefoxの再起動が必要になる場合があります。

Chrome/Chromium も同様です。NSS ベースだからです。ただし、手っ取り早く解決したい場合は、CA 証明書をユーザーの信頼ストアにインストールするだけで十分です。ただし、手動での追加は少し難しいので、多少手間がかかるかもしれませんが、ご安心ください。

一部の設定、特に企業や社内の証明書を扱っている場合は、SSL警告を回避するために、Linuxシステムストアとブラウザ固有の証明書ストアの両方を確認することをお勧めします。もちろん、後で証明書を削除したい場合は、その.crtファイルを削除して更新を再実行するか、適切な証明書データベースのエントリを削除してください。

まとめと簡単なチェックリスト

  • 必要に応じて証明書を PEM に変換しました。
  • CA 証明書を/usr/local/share/ca-certificates/にコピーしました。
  • 実行しsudo update-ca-certificatesて出力を確認しました。
  • で信頼性を検証しましたopenssl verify
  • 必要に応じてブラウザの信頼ストアを更新します (Firefox の certutil 経由)。

最後に

少し面倒かもしれませんが、正しく設定すれば、Linuxシステムとブラウザは社内サイトや自己署名証明書に対してSSL警告を表示しなくなるはずです。正直なところ、「信頼できない証明書」エラーを回避できれば、開発サーバーや社内サーバーで作業する際の作業がはるかに楽になります。多少の試行錯誤や、場合によっては1、2回の再起動が必要になるかもしれませんが、一度うまく動作すれば、大抵はスムーズに進むでしょう。この設定が、SSLの信頼性に関する問題で悩む誰かの時間を節約してくれることを願っています。