ネットワークセキュリティサービス

提供: ArchWiki
Nssから転送)
ナビゲーションに移動 検索に移動

Network Security Services (NSS) はセキュア通信を用いるクライアント・サーバーアプリケーションの開発のために作られたクロスプラットフォームなライブラリのセットです。

NSS を使って作成されたアプリケーションは SSL v2 と v3, TLS, PKCS #5, #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 証明書などのセキュリティ規格をサポートします。

NSS は、ChromiumFirefox などの多くのパッケージで必要です。

インストール

公式リポジトリにある nssインストールしてください。

使用方法

NSS は、動的に構成された PKCS #11 モジュールのリストに対する操作として実装されています。各モジュールは、暗号操作を実行し、暗号オブジェクトを保存するためのトークンへのアクセスを提供します。構成されたモジュールのリストは、通常、ユーザーが NSS の初期化時に提供する任意のディレクトリに、pkcs11.txt というファイルとして保存されます。このリストには常に、「NSS Internal PKCS #11 Module」という組み込みモジュールが含まれており、トークン「NSS Generic Crypto Services」と「NSS Certificate DB」を提供します。最初のトークンは、RSA、SHA256、TLS などの暗号メカニズムを提供します。2 番目のトークンは、cert9.db および key4.db というファイルに、同じユーザー指定のディレクトリ内に証明書と秘密鍵を保存します。pkcs11.txtcert9.db、および key4.db のファイルは「NSS データベース」とも呼ばれます。いくつかのアプリケーションの NSS データベースへのパスは、以下の表に記載されています。各操作のためにいくつかのパスを指定する必要があります。以下の例では ~/.pki/nssdb/ を使用します。

アプリケーション NSS データベースへのパス
chromium, evolution ~/.pki/nssdb/
firefox ~/.mozilla/firefox/<profile>/
thunderbird ~/.thunderbird/<profile>/
libreoffice-fresh オプションで設定可能 [1]

NSS は、PKCS #11 モジュールを管理するための modutil(1) ユーティリティ、および証明書と秘密鍵を管理するための certutil(1) ユーティリティを提供します。

ノート: NSS は、初期化フラグに応じて、/usr/lib/libnssckbi.soPKCS #11 モジュールのリストに自動的に追加することができます。

証明書 DB の確認

全ての証明書のリストを表示するには:

$ certutil -d sql:$HOME/.pki/nssdb -L

証明書の詳細を確認するには:

$ certutil -d sql:$HOME/.pki/nssdb -L -n certificate_nickname

RSA 秘密鍵を生成

$ certutil -G -d database_directory -g keysize -n nickname

証明書署名要求を生成

$ certutil -S -s subject -n nickname -x -t C,C,C -o file

自己署名証明書の生成

$ certutil -d ~/.pki/nssdb/ -S -s subject -n nickname -x -t C,C,C -o file

OpenSSL を使用して自己署名証明書を生成

OpenSSL を使用すると、certutil のサブジェクト形式を使用するよりも、フォーマットが容易な対話型プロンプトを利用できます。以下の手順は [2][3] から適応されています。

鍵ペアと証明書を作成します(-noenc は秘密鍵のパスワードによる暗号化を無効にします):

$ openssl req -x509 -newkey rsa:4096 -keyout myKey.pem -out cert.pem -days 365 -noenc

pkcs12 ファイルを作成します:

$ openssl pkcs12 -export -out keyStore.p12 -inkey myKey.pem -in cert.pem

NSS データベースがまだ存在しない場合は作成します:

$ certutil -d ~/.pki/nssdb -N --empty-password

鍵をデータベースにインポートします:

$ pk12util -d ~/.pki/nssdb -i keyStore.p12

証明書のインポート

証明書を追加するには -A オプションを使います:

$ certutil -d sql:$HOME/.pki/nssdb -A -t "TRUSTARGS" -n certificate_nickname -i /path/to/cert/filename

TRUSTARGS は、0個以上のアルファベット文字の3つの文字列であり、コンマで区切られています。例:"TCu、Cu、Tuw" これらは、SSL、電子メール、およびオブジェクト署名に対して証明書を信頼する方法を定義し、 certutil ドキュメントで説明されています。 または ブログ投稿 信頼フラグについて参照。

SSL クライアント認証のための個人証明書と秘密鍵を追加するには次のコマンドを使います:

$ pk12util -d sql:$HOME/.pki/nssdb -i /path/to/PKCS12/cert/filename.p12

上記のコマンドで PKCS #12 ファイルに保存されている個人証明書と秘密鍵がインポートされます。個人証明書の TRUSTARGS"u,u,u" に設定されます。

証明書の編集

証明書を編集するには certutil-M オプションを付けます。例えば、TRUSTARGS を編集するには:

$ certutil -d sql:$HOME/.pki/nssdb -M -t "TRUSTARGS" -n certificate_nickname

証明書の削除

証明書を削除するには -D オプションを使って下さい:

$ certutil -d sql:$HOME/.pki/nssdb -D -n certificate_nickname

信頼できる CA 証明書の追加

システム全体のトラストストア /usr/lib/pkcs11/p11-kit-trust.so は、通常、自動的に PKCS #11 モジュールのリストに追加されます。システム全体の設定については、トランスポート層セキュリティ#信頼管理を参照してください。アプリケーションごとの設定には、以下のコマンドを使用して CA 証明書を追加します:

certutil -d ~/.pki/nssdb/ -A -i /path/to/certificate -n certificate nickname -t C,,

参照