web-dev-qa-db-ja.com

どのようにしてUbuntuに認証局(CA)を追加しますか?

私の仕事は、証明書を支払うことなく、仕事のさまざまな側面を安全に処理するために、独自の 認証局 (CA)を発行することにしました。

  • 暗号化メールに署名する
  • メールの内容を暗号化する
  • 会社 IRC クライアント証明書ベースなどのものにアクセスします。
  • 元従業員の鍵を自動的に取り消す

彼らは私に.pemファイルを送ってきました、そしてそれを私のUbuntuインストールに追加する方法がわかりません。 「Mac上でダブルクリックするとインストールされます。」

どうやって進めますか? .key.csr.crtファイルを作成するために、 OpenSSL で何かする必要がありますか?

155
Xeoncross

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すべてを連結した長いリストです)。

OpenSSLのs_clientを使用するには、インストールしたばかりのCAによって署名された証明書を使用していることがわかっているサーバーに接続します。

$ 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 = [email protected]
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/[email protected]

... 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 code0 (ok)に設定されていることを確認します。

215
Mark E. Haase

man update-ca-certificates

update-ca-certificates  is  a  program  that  updates   the   directory
/etc/ssl/certs to hold SSL certificates and generates 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.

Furthermore   all   certificates   found   below   /usr/local/share/ca-
certificates are also included as implicitly trusted.

以上のことから、ローカルの証明書ファイルを信頼できるストアに入れるには、それらを/usr/local/share/ca-certificatesに入れてからupdate-ca-certificatesを実行するのが望ましいと思います。あなたは/etc/ssl/certsに直接触れる必要はありません。

62
Steven Monday

私は同じ問題を抱えていたので、.pemファイルを/usr/local/share/ca-certificatesにコピーして.crtに名前を変更する必要がありました。 .cerファイルがない場合は、.pemファイルをopensslを使用して簡単に.pemに変換できます。

ファイルをコピーしたら、Sudo update-ca-certificatesを実行する必要があります。

15
greuze

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ファイルです。

その他の参考資料

13
Johann

Debianベースの新しいビルドの場合は、実行する必要があります。

Sudo dpkg-reconfigure ca-certificates

注:Sudoのdpkg-reconfigure ca-certificatesは内部でupdate-ca-certificatesを呼び出します

もちろん、これを行う前に、証明書(.crtファイル)を/ usr/share/ca-certificatesにコピーする必要があります。

10
missmah

Dwmw2の 答え を基にして、証明書管理にNSSを使用するアプリケーションにシステムトラストストアを使用するように実際に伝えることができます。

libnss3にはデフォルトで読み取り専用のルートCA証明書のセット(libnssckbi.so)が付属しているため、ほとんどの場合は$HOME/.pki/nssdbにあるローカルユーザーの信頼ストアに手動で追加する必要があります。 p11-kitは、libnssckbi.soにインストールされたシステム全体のルート証明書へのアダプタとして機能する/etc/ssl/certsの代わりになるドロップインを提供します。

編集:

libnssckbi.soのバージョンよりもlibnss3のバージョンの方が多いようです。以下は、それらすべてを見つけてバックアップし、それらを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

オリジナルの説明:

これを行うには、p11-kitlibnss3をインストールします(まだインストールされていない場合)。

Sudo apt-get update && Sudo apt-get install -y p11-kit libnss3

それからlibnssckbi.soによって提供された既存のlibnss3をバックアップします。

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)を使用するアプリケーションで利用できるようになります。

3
wheeler

前述のように、NSSを使用するさまざまなアプリケーションには独自の証明書ストアがあります。 Ubuntuを基にしているので、certutilを手動で使用して、アプリケーションごと、ユーザーごとにCAを追加する必要があります。

Fedoraのような他のディストリビューションでは、このようなことはJust Works™であり、あなたがupdate-ca-trustでインストールしたCAを自動的に信頼しないようなアプリケーションに対してはバグを報告すべきです。

p11-kit-modulesパッケージをインストールしてからNSS組み込みの信頼ルートモジュールをp11-kit-trust.soに置き換えることで、Ubuntuでもこれを修正できます。例えば、/usr/lib/firefox/libnssckbi.soから/usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.soにシンボリックリンクを作成することによって

それからあなたはあなたがいくつかのハードコードされたものではなくシステムの設定された信頼ルートを得るでしょう。 Ubuntuは、そのlibnssckbi.soライブラリの複数の異なるコピーをハードコードされた信頼ルートで出荷しているので、それらすべてを置き換える必要があります。

比較 https://bugs.launchpad.net/ubuntu/+source/nss/+ bug/1647285

1
dwmw2

ここに追加するために真剣に愚かな答えが、私はlinuxでcertutilsと行き来する2時間を費やしていました...私はすべてが正しかったと確信していました:

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

フォローした後の成功の秘訣は次のとおりです。 スティーブンマンデー のアドバイス

0
Jamie Hutber