私の仕事は、証明書にお金を払わずに安全に仕事のさまざまな側面を処理するために、独自のcertificate authority (CA)を発行することにしました
- 暗号化して電子メールにサインします
- メールの内容を暗号化します
- IRC クライアント証明書に基づいて、会社のようなものにアクセスできるようにする
- 元社員の鍵を自動的に取り消す
.pem
ファイルが送られてきたのですが、Ubuntuのインストールに追加する方法がよくわかりません。送られてきた指示は”Macでダブルクリックするとインストールされます。”
どのように進めればよいのでしょうか?OpenSSLで.key
、.csr
、.crt
ファイルを作成するために何かする必要がありますか?
207 Xeoncross 2012-06-15
CAのインストール
PEM形式(----BEGIN CERTIFICATE----
が入っている形式)の証明書を/usr/local/share/ca-certificates
にコピーし、.crt
のファイル拡張子で名前を付けます
そして、sudo update-ca-certificates
を実行します
警告。このインストールは、この証明書ストアを使用する製品にのみ適用されます。一部の製品では他の証明書ストアを使用している場合がありますので、それらの製品を使用している場合は、この CA 証明書を他の証明書ストアにも追加する必要があります。(Firefox の説明, Chrome の説明, Java の説明)
CAのテスト
これがうまくいったかどうかは、/etc/ssl/certs/ca-certificates.crt
で追加した証明書を探すことで確認できます (これは、信頼できるすべてのCAの長いリストを連結したものです)
また、先ほどインストールしたCAが署名した証明書を使用していることがわかっているサーバに接続しようとすることで、OpenSSLのs_clientを使用することもできます
$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs
CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = admin@whatever.com
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/emailAddress=admin@whatever.com
... snip lots of output ...
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1392837700
Timeout : 300 (sec)
Verify return code: 0 (ok)
最初に探すべきものは、出力の上部近くにある証明書チェーンです。これはCAが発行者として表示されているはずです(i:
の隣)。これは、サーバがインストールしたCAによって署名された証明書を提示していることを示しています
次に、最後のverify return code
が0 (ok)
になっているのを探します
281 Mark E. Haase 2014-02-19
update-ca-certificates is a program that updates the directory /etc/ssl/certs to hold SSL
certificates and generates ca-certificates.crt, a concatenated single-file list of
certificates.
It reads the file /etc/ca-certificates.conf. Each line gives a pathname of a CA
certificate under /usr/share/ca-certificates that should be trusted. Lines that begin
with "#" are comment lines and thus ignored. Lines that begin with "!" are deselected,
causing the deactivation of the CA certificate in question. Certificates must have a .crt
extension in order to be included by update-ca-certificates.
Furthermore all certificates with a .crt extension found below /usr/local/share/ca-
certificates are also included as implicitly trusted.
上記のことから、ローカルの証明書ファイルを信頼されたストアに入れるための好ましい方法は、/usr/local/share/ca-certificates
に入れてからupdate-ca-certificates
を実行することだと推察します。/etc/ssl/certs
を直接触る必要はありません
74 Steven Monday 2012-06-15
update-ca-certificates
に関する他の回答は、システム証明書ストアから読み込むアプリケーションの場合は正しいです。Chrome や Firefox、そしておそらく他のいくつかのアプリケーションでは、証明書は Mozilla NSS ライブラリのバックエンドである nssdb に置かれなければなりません
https://code.google.com/p/chromium/wiki/LinuxCertManagementより
例えば、SSLサーバ証明書を発行するためのルートCA証明書を信頼するには、次のようにします
certutil -d sql:$HOME/.pki/nssdb -A -t “C,” -n <証明書のニックネーム> -i <証明書のファイル名>
ここで、<certificate nickname>
は任意のもので、<certificate filename>
は.pemまたは.crtファイルです
その他の参考文献
- 一般的な説明。https://wiki.archlinux.org/index.php/Network_Security_Services
certutil
の man ページで、上記で使用したパラメータについて説明しています。https://developer.mozilla.org/en-US/docs/NSS_reference/NSS_tools_:_certutil
19 Johann 2013-10-10
私も同じ問題があり、.pem
ファイルを/usr/local/share/ca-certificates
にコピーして.crt
にリネームしました。.cer
ファイルは、.pem
を持っていなければ、opensslなどで簡単に.pem
に変換することができます
ファイルをコピーしたら、sudo update-ca-certificates
を実行する必要があります
16 greuze 2014-04-30
Debian をベースにした新しいビルドの場合は、実行する必要があるかもしれません
sudo dpkg-reconfigure ca-certificates
注: sudo dpkg-reconfigure ca-certificates は内部的に update-ca-certificates を呼び出します
もちろん、証明書 (.crt ファイル) を /usr/share/ca-certificates にコピーする必要があります。)
12 missmah 2015-09-02
dwmw2 の 回答 をベースに、証明書管理に NSS を使用しているアプリケーションにシステムのトラストストアを使用するように指示することができます
libnss3
はデフォルトでルートCA証明書の読み取り専用セット (libnssckbi.so
) を出荷しているので、ほとんどの場合、$HOME/.pki/nssdb
にあるローカルユーザのトラストストアに自分で手動で追加する必要があります。p11-kit
は、/etc/ssl/certs
にインストールされているシステム全体のルート証明書へのアダプタとして機能する libnssckbi.so
の代替品を提供します
Edit:
libnss3
だけではなく、libnssckbi.so
のバージョンもあるようです。以下は、それらをすべて見つけ出してバックアップし、p11-kit
へのリンクに置き換えるスクリプトです
sudo apt-get update && sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
sudo mv $line ${line}.bak
sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done
Original instructions:
そのためには、p11-kit
とlibnss3
をインストールしてください(まだ足がついていない場合)
sudo apt-get update && sudo apt-get install -y p11-kit libnss3
そして、libnss3
が提供する既存のlibnssckbi.so
をバックアップします
sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak
最後にシンボリックリンクを作成します
sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
動作したことを確認するために、ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
を実行するとリンクが表示されるはずです
lrwxrwxrwx 1 root root 49 Apr 9 20:28 /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so
これで、update-ca-certificates
を使ってCAストアに証明書を追加すると、ChromeなどのNSS(libnss3
)を使っているアプリケーションでも証明書を利用できるようになりました
7 wheeler 2018-04-10
ご指摘のように、NSSを使用する様々なアプリケーションは、独自の証明書ストアを持っています。Ubuntu上では、アプリケーションごとに、ユーザごとに、手動でcertutil
を使って認証局を追加しなければなりません
Fedora のような他のディストリビューションでは、この種のことは Just Works™ で、update-ca-trust
でインストールした CA を自動的に信頼しないアプリケーションに対してバグを報告する必要があります
Ubuntuでも、p11-kit-modules
パッケージをインストールし、NSS組み込みのトラストルーツモジュールをp11-kit-trust.so
に置き換え、例えば/usr/lib/firefox/libnssckbi.so
から/usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so
へのシンボリックリンクを作成することで、これを修正することができます
そうすれば、ハードコードされたものではなく、システムに設定されたトラストルートを取得することができます。Ubuntuは、ハードコードされたトラストルーツを持つlibnssckbi.soライブラリの複数の異なるコピーを出荷しているので、それらをすべて入れ替えなければならないことに注意してください!
4 dwmw2 2016-12-12
ここに追加するには真面目に愚かな答えですが、私は2時間かけてlinuxのcertutilsを行ったり来たりしていました…私はすべてが正しいと確信していました
hutber@hutber-mint /var/www/asos-mvt-framework $ certutil -L -d sql:${HOME}/.pki/nssdb
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
anyproxy CT,,
rootCA CT,,
myasos CT,,
それでもクロームでは何も動いていませんでした。いろいろ試してみましたが、結局
Restarting Chrome
フォローした後の私の成功の鍵でした。スティーブン・マンデーのアドバイス
1 Jamie Hutber 2018-01-02