「ネットワークセキュリティサービス」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(序文を更新)
(Kusanaginoturugi がページ「Network Security Services」を「ネットワークセキュリティサービス」に移動しました)
 
(同じ利用者による、間の6版が非表示)
1行目: 1行目:
[[Category:Transport Layer Security]]
+
[[Category:トランスポート層セキュリティ]]
 
[[Category:Mozilla]]
 
[[Category:Mozilla]]
 
[[en:Network Security Services]]
 
[[en:Network Security Services]]
7行目: 7行目:
 
NSS を使って作成されたアプリケーションは [[Wikipedia:ja:SSL|SSL]] v2 と v3, [[Wikipedia:ja:TLS|TLS]], [[Wikipedia:ja:PKCS|PKCS]] #5, #7, [[Wikipedia:PKCS 11|PKCS #11]], [[Wikipedia:PKCS 12|PKCS #12]], [[Wikipedia:ja:S/MIME|S/MIME]], [[Wikipedia:ja:X.509|X.509]] v3 証明書などのセキュリティ規格をサポートします。
 
NSS を使って作成されたアプリケーションは [[Wikipedia:ja:SSL|SSL]] v2 と v3, [[Wikipedia:ja:TLS|TLS]], [[Wikipedia:ja:PKCS|PKCS]] #5, #7, [[Wikipedia:PKCS 11|PKCS #11]], [[Wikipedia:PKCS 12|PKCS #12]], [[Wikipedia:ja:S/MIME|S/MIME]], [[Wikipedia:ja:X.509|X.509]] v3 証明書などのセキュリティ規格をサポートします。
   
NSS は、 [[Chromium]] や [[Firefox]] などの多くのパッケージで必要です。
+
NSS は、[[Chromium]] や [[Firefox]] などの多くのパッケージで必要です。
   
 
== インストール ==
 
== インストール ==
13行目: 13行目:
 
[[公式リポジトリ]]にある {{Pkg|nss}} を[[pacman|インストール]]してください。
 
[[公式リポジトリ]]にある {{Pkg|nss}} を[[pacman|インストール]]してください。
   
== 証明書の管理 ==
+
== 使用方法 ==
   
  +
NSS は、動的に構成された [[Wikipedia:PKCS 11|PKCS #11]] モジュールのリストに対する操作として実装されています。各モジュールは、暗号操作を実行し、暗号オブジェクトを保存するためのトークンへのアクセスを提供します。構成されたモジュールのリストは、通常、ユーザーが NSS の初期化時に提供する任意のディレクトリに、{{ic|pkcs11.txt}} というファイルとして保存されます。このリストには常に、「NSS Internal PKCS #11 Module」という組み込みモジュールが含まれており、トークン「NSS Generic Crypto Services」と「NSS Certificate DB」を提供します。最初のトークンは、RSA、SHA256、TLS などの暗号メカニズムを提供します。2 番目のトークンは、{{ic|cert9.db}} および {{ic|key4.db}} というファイルに、同じユーザー指定のディレクトリ内に証明書と秘密鍵を保存します。{{ic|pkcs11.txt}}、{{ic|cert9.db}}、および {{ic|key4.db}} のファイルは「NSS データベース」とも呼ばれます。いくつかのアプリケーションの NSS データベースへのパスは、以下の表に記載されています。各操作のためにいくつかのパスを指定する必要があります。以下の例では {{ic|~/.pki/nssdb/}} を使用します。
NSS に付属している ''certutil'' ユーティリティを使うことで証明書を管理できます。
 
  +
  +
{| class="wikitable"
  +
! アプリケーション !! NSS データベースへのパス
  +
|-
  +
| {{Pkg|chromium}}, {{Pkg|evolution}}
  +
| {{ic|~/.pki/nssdb/}}
  +
|-
  +
| {{Pkg|firefox}}
  +
| {{ic|~/.mozilla/firefox/<profile>/}}
  +
|-
  +
| {{Pkg|thunderbird}}
  +
| {{ic|~/.thunderbird/<profile>/}}
  +
|-
  +
| {{Pkg|libreoffice-fresh}}
  +
| オプションで設定可能 [https://help.libreoffice.org/latest/en-US/text/shared/guide/digitalsign_send.html]
  +
|}
  +
  +
NSS は、[[Wikipedia:PKCS 11|PKCS #11]] モジュールを管理するための {{man|1|modutil}} ユーティリティ、および証明書と秘密鍵を管理するための {{man|1|certutil}} ユーティリティを提供します。
  +
  +
{{Note|NSS は、初期化フラグに応じて、{{ic|/usr/lib/libnssckbi.so}} を [[Wikipedia:PKCS 11|PKCS #11]] モジュールのリストに自動的に追加することができます。}}
   
 
=== 証明書 DB の確認 ===
 
=== 証明書 DB の確認 ===
33行目: 53行目:
 
$ certutil -S -s ''subject'' -n ''nickname'' -x -t C,C,C -o ''file''
 
$ certutil -S -s ''subject'' -n ''nickname'' -x -t C,C,C -o ''file''
   
===自己署名証明書生成 ===
+
=== 自己署名証明書生成 ===
   
$ 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'' のサブジェクト形式を使用するよりも、フォーマットが容易な対話型プロンプトを利用できます。以下の手順は [https://serverfault.com/questions/831394/how-can-i-create-a-pkcs12-file-using-openssl-self-signed-certs] と [https://askubuntu.com/questions/1225262/how-do-i-generate-a-certificate-to-sign-pdf-electronically] から適応されています。
  +
  +
鍵ペアと証明書を作成します(-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
   
 
=== 証明書のインポート ===
 
=== 証明書のインポート ===
58行目: 91行目:
 
証明書を削除するには {{ic|-D}} オプションを使って下さい:
 
証明書を削除するには {{ic|-D}} オプションを使って下さい:
 
$ certutil -d sql:$HOME/.pki/nssdb -D -n ''certificate_nickname''
 
$ certutil -d sql:$HOME/.pki/nssdb -D -n ''certificate_nickname''
  +
  +
=== 信頼できる CA 証明書の追加 ===
  +
  +
システム全体のトラストストア {{ic|/usr/lib/pkcs11/p11-kit-trust.so}} は、通常、自動的に [[Wikipedia:PKCS 11|PKCS #11]] モジュールのリストに追加されます。システム全体の設定については、[[トランスポート層セキュリティ#信頼管理]]を参照してください。アプリケーションごとの設定には、以下のコマンドを使用して CA 証明書を追加します:
  +
  +
certutil -d ~/.pki/nssdb/ -A -i ''/path/to/certificate'' -n ''certificate nickname'' -t C,,
   
 
== 参照 ==
 
== 参照 ==
   
* [https://www.mozilla.org/projects/security/pki/nss/ Network Security Services] on mozilla.org.
+
* [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS Network Security Services - Mozilla]
* [https://www.mozilla.org/projects/security/pki/nss/tools/certutil.html#1034193 Using the Certificate Database Tool] on mozilla.org.
+
* [https://blogs.oracle.com/meena/about-trust-flags-of-certificates-in-nss-database-that-can-be-modified-by-certutil Managing Certificate Trust flags in NSS Database - Meena Vyas, Oracle]
* [http://blogs.oracle.com/meena/entry/notes_about_trust_flags Managing Certificate Trust flags in NSS Database] on Meena's blog.
 

2024年8月14日 (水) 22:37時点における最新版

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,,

参照