「ネットワークセキュリティサービス」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「[http://code.google.com/」を「[https://code.google.com/」に置換) |
Kusanaginoturugi (トーク | 投稿記録) 細 (Kusanaginoturugi がページ「Network Security Services」を「ネットワークセキュリティサービス」に移動しました) |
||
(2人の利用者による、間の12版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:トランスポート層セキュリティ]] |
+ | [[Category:Mozilla]] |
||
[[en:Network Security Services]] |
[[en:Network Security Services]] |
||
[[ru:Network Security Services]] |
[[ru:Network Security Services]] |
||
− | + | [[Wikipedia:Network Security Services|Network Security Services]] ('''NSS''') はセキュア通信を用いるクライアント・サーバーアプリケーションの開発のために作られたクロスプラットフォームなライブラリのセットです。 |
|
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]] などの多くのパッケージで必要です。 |
||
== インストール == |
== インストール == |
||
10行目: | 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 の確認 === |
||
21行目: | 44行目: | ||
証明書の詳細を確認するには: |
証明書の詳細を確認するには: |
||
$ certutil -d sql:$HOME/.pki/nssdb -L -n ''certificate_nickname'' |
$ 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'' のサブジェクト形式を使用するよりも、フォーマットが容易な対話型プロンプトを利用できます。以下の手順は [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 |
||
=== 証明書のインポート === |
=== 証明書のインポート === |
||
27行目: | 75行目: | ||
$ certutil -d sql:$HOME/.pki/nssdb -A -t "''TRUSTARGS''" -n ''certificate_nickname'' -i ''/path/to/cert/filename'' |
$ certutil -d sql:$HOME/.pki/nssdb -A -t "''TRUSTARGS''" -n ''certificate_nickname'' -i ''/path/to/cert/filename'' |
||
− | + | {{ic|TRUSTARGS}} は、0個以上のアルファベット文字の3つの文字列であり、コンマで区切られています。例:{{ic|"TCu、Cu、Tuw"}} これらは、SSL、電子メール、およびオブジェクト署名に対して証明書を信頼する方法を定義し、 [https://www.mozilla.org/projects/security/pki/nss/tools/certutil.html#1034193 certutil ドキュメントで説明されています。] または [https://blogs.oracle.com/meena/entry/notes_about_trust_flagsMeena ブログ投稿] 信頼フラグについて参照。 |
|
SSL クライアント認証のための個人証明書と秘密鍵を追加するには次のコマンドを使います: |
SSL クライアント認証のための個人証明書と秘密鍵を追加するには次のコマンドを使います: |
||
43行目: | 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:// |
+ | * [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS Network Security Services - Mozilla] |
− | * [https:// |
+ | * [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] |
− | * [https://code.google.com/p/chromium/wiki/LinuxCertManagement Certificate management] on Chromium help. |
||
− | * [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 は、Chromium や Firefox などの多くのパッケージで必要です。
目次
インストール
使用方法
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.txt
、cert9.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) ユーティリティを提供します。
証明書 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,,