ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 の管理: セキュリティーサービス Oracle Solaris 11.1 Information Library (日本語) |
パート II システム、ファイル、およびデバイスのセキュリティー
10. Oracle Solaris のセキュリティー属性 (参照)
pktool gencert コマンドを使用して証明書を作成する方法
証明書と非公開鍵を PKCS #12 形式でエクスポートする方法
pktool setpin コマンドを使用してパスフレーズを生成する方法
pktool genkeypair コマンドを使用して鍵のペアを生成する方法
22. Kerberos エラーメッセージとトラブルシューティング
このセクションでは、パスワード、パスフレーズ、ファイル、キーストア、証明書、CRL などの公開鍵オブジェクトを、pktool コマンドを使って管理する方法について説明します。
鍵管理フレームワーク (KMF) を使うと公開鍵技術を集中管理できます。
|
この手順では、自己署名付き証明書を作成し、その証明書を PKCS #11 キーストアに格納します。また、この処理の一部として、RSA 公開鍵/非公開鍵ペアも作成されます。非公開鍵は、証明書とともにキーストアに格納されます。
% pktool gencert [keystore=keystore] label=label-name \ subject=subject-DN serial=hex-serial-number
公開鍵オブジェクトのタイプを指定することでキーストアを指定します。この値には、nss、pkcs11、または file を指定できます。このキーワードはオプションです。
発行者が証明書に与える一意の名前を指定します。
証明書の識別名を指定します。
16 進形式のシリアル番号を指定します。証明書の発行者が、0x0102030405 などの番号を選択します。
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number n. ...
このコマンドは、キーストア内のすべての証明書を一覧表示します。次の例では、キーストアには証明書が 1 つしか含まれていません。
例 13-1 pktool を使って自己署名付き証明書を作成する
次の例では、My Company のあるユーザーが自己署名付き証明書を作成し、その証明書を PKCS #11 オブジェクト用のキーストアに格納しています。このキーストアは最初は空になっています。キーストアが初期化されていない場合、ソフトトークンの PIN は changeme になります。
% pktool gencert keystore=pkcs11 label="My Cert" \ subject="C=US, O=My Company, OU=Security Engineering Group, CN=MyCA" \ serial=0x000000001 Enter pin for Sun Software PKCS#11 softtoken:Type PIN for token
% pktool list Found 1 certificates. 1. (X.509 certificate) Label: My Cert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01
この手順では、PEM または生の DER を使ってエンコードされた PKI 情報を含むファイルを、キーストアにインポートする方法を説明します。エクスポートの手順については、例 13-4 を参照してください。
% pktool import keystore=keystore infile=infile-name label=label-name
PKCS #12 形式のエクスポートファイルなど、非公開の PKI 情報をインポートする場合、そのファイルはパスワードを必要とします。インポートするファイルの作成者が PKCS #12 パスワードを教えてくれます。
Enter password to use for accessing the PKCS12 file:Type PKCS #12 password
Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number 2. ...
例 13-2 PKCS #12 ファイルをキーストアにインポートする
次の例では、サードパーティーから取得した PKCS #12 ファイルをインポートしています。pktool import コマンドは、gracedata.p12 ファイルから非公開鍵と証明書を取り出し、それらを指定されたキーストア内に格納します。
% pktool import keystore=pkcs11 infile=gracedata.p12 label=GraceCert Enter password to use for accessing the PKCS12 file:Type PKCS #12 password Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Found 1 certificate(s) and 1 key(s) in gracedata.p12 % pktool list Found 1 certificates. 1. (X.509 certificate) Label: GraceCert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01
例 13-3 X.509 証明書をキーストアにインポートする
次の例では、PEM 形式の X.509 証明書を指定されたキーストアにインポートしています。この公開証明書はパスワードで保護されていません。ユーザーの公開キーストアもパスワードで保護されていません。
% pktool import keystore=pkcs11 infile=somecert.pem label="TheirCompany Root Cert" % pktool list Found 1 certificates. 1. (X.509 certificate) Label: TheirCompany Root Cert ID: 21:ae:83:98:24:d1:1f:cb:65:5b:48:75:7d:02:47:cf:98:1f:ec:a0 Subject: C=US, O=TheirCompany, OU=Security, CN=TheirCompany Root CA Issuer: C=US, O=TheirCompany, OU=Security, CN=TheirCompany Root CA Serial: 0x01
PKCS #12 形式のファイルを作成し、非公開鍵とそれに関連付けられた X.509 証明書をほかのシステムにエクスポートすることができます。このファイルへのアクセスはパスワードで保護されます。
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number 2. ...
pktool list コマンドから得られたキーストアとラベルを使用します。エクスポートファイルのファイル名を指定します。名前に空白が含まれている場合は、名前を二重引用符で囲みます。
% pktool export keystore=keystore outfile=outfile-name label=label-name
プロンプトで、キーストアの現在のパスワードを入力します。ここで、エクスポートファイルのパスワードを作成します。ファイルの受信者は、インポート時にこのパスワードを入力する必要があります。
Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Enter password to use for accessing the PKCS12 file:Create PKCS #12 password
ヒント - パスワードはエクスポートファイルとは別に送ってください。パスワードを伝える最良の方法は、電話上など、通常の通信手段以外の手段を使用する方法です。
例 13-4 証明書と非公開鍵を PKCS #12 形式でエクスポートする
次の例では、ユーザーが非公開鍵を関連付けられた X.509 証明書とともに標準の PKCS #12 ファイルにエクスポートしています。このファイルは、ほかのキーストアにインポートできます。PKCS #11 パスワードはソースのキーストアを保護します。PKCS #12 パスワードは、PKCS #12 ファイル内の非公開データを保護するために使用されます。このパスワードはファイルのインポート時に必要となります。
% pktool list Found 1 certificates. 1. (X.509 certificate) Label: My Cert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01
% pktool export keystore=pkcs11 outfile=mydata.p12 label="My Cert" Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Enter password to use for accessing the PKCS12 file:Create PKCS #12 password
続いて、このユーザーは受信者に電話をかけ、PKCS #12 パスワードを伝えます。
キーストア内のあるオブジェクトに対して、あるいはキーストアそのものに対して、パスフレーズを生成することができます。このパスフレーズは、オブジェクトやキーストアにアクセスする際に必要となります。キーストア内のオブジェクトに対するパスフレーズの生成例については、例 13-4 を参照してください。
% pktool setpin keystore=nss|pkcs11 dir=directory
PKCS #11 キーストアの最初のパスワードは changeme です。NSS キーストアの最初のパスワードは空のパスワードです。
現在のトークンパスフレーズの入力を要求されたら、PKCS #11 キーストアのトークン PIN を入力するか、または NSS キーストアを示す Return キーを押します。
Enter current token passphrase:Type PIN or press the Return key Create new passphrase:Type the passphrase that you want to use Re-enter new passphrase:Retype the passphrase Passphrase changed.
これでキーストアがパスフレーズで保護されます。パスフレーズを忘れると、キーストア内のオブジェクトにアクセスできなくなります。
例 13-5 キーストアをパスフレーズで保護する
次の例は、NSS データベースのパスフレーズを設定する方法を示したものです。パスフレーズがまだ作成されていないため、最初のプロンプトで Return キーを押します。
% pktool setpin keystore=nss dir=/var/nss Enter current token passphrase:Press the Return key Create new passphrase: has8n0NdaH Re-enter new passphrase: has8n0NdaH Passphrase changed.
アプリケーションによっては、公開鍵と非公開鍵のペアが必要なものがあります。この手順では、これらの鍵のペアを作成して格納します。
次のいずれかを実行します。
ディスク上のファイルから直接鍵を読み取るアプリケーションの場合は、ファイルベースの鍵が作成されます。通常、OpenSSL 暗号化ライブラリを直接使用するアプリケーションでは、そのアプリケーションのための鍵と証明書をファイル内に格納する必要があります。
注 - file キーストアは、楕円曲線 (ec) 鍵および証明書をサポートしていません。
% pktool genkeypair keystore=file outkey=key-filename \ [format=der|pem] [keytype=rsa|dsa] [keylen=key-size]
file の値は、鍵の格納場所のファイルタイプを指定します。
鍵のペアが格納されるファイルの名前を指定します。
鍵のペアのエンコード形式を指定します。der 出力はバイナリであり、pem 出力は ASCII です。
file キーストア内に格納できる鍵のペアのタイプを指定します。定義については、DSA と RSA を参照してください。
鍵の長さをビット数で指定します。8 で割り切れる数にする必要があります。指定できるキーサイズを確認するには、cryptoadm list -vm コマンドを使用します。
この方法を使用するには、手順 1 を完了する必要があります。
PKCS #11 キーストアは、オブジェクトをハードウェアデバイス上に格納するために使用されます。これらのデバイスには、Sun Crypto Accelerator 6000 カード、TPM (Trusted Platform Module) デバイス、または暗号化フレームワークに組み込まれたスマートカードがあります。また、PKCS #11 を使用すると、オブジェクトを softtoken (ソフトウェアベースのトークン) 内にも格納できます。このトークンでは、オブジェクトがディスク上の個人のサブディレクトリ内に格納されます。詳細は、pkcs11_softtoken(5) のマニュアルページを参照してください。
指定したラベルによって、鍵のペアをキーストアから取得できます。
% pktool genkeypair label=key-label \ [token=token[:manuf[:serial]]] \ [keytype=rsa|dsa|ec] [curve=ECC-Curve-Name]]\ [keylen=key-size] [listcurves]
鍵のペアのラベルを指定します。鍵のペアは、そのラベルによってキーストアから取得できます。
トークン名を指定します。デフォルトでは、トークン名は Sun Software PKCS#11 softtoken です。
鍵のペアのタイプを指定します。楕円曲線 (ec) タイプの場合は、必要に応じて曲線名を指定します。曲線名は、listcurves オプションに対する出力として一覧表示されます。
鍵の長さをビット数で指定します。8 で割り切れる数にする必要があります。
ec 鍵タイプの curve= オプションの値として使用できる楕円曲線の名前を一覧表示します。
NSS キーストアは、NSS を主要な暗号化インタフェースとして使用するサーバーによって使用されます。
この方法を使用するには、手順 1 を完了する必要があります。
% pktool keystore=nss genkeypair label=key-nickname \ [token=token[:manuf[:serial]]] \ [dir=directory-path] [prefix=database-prefix] \ [keytype=rsa|dsa|ec] [curve=ECC-Curve-Name]] \ [keylen=key-size] [listcurves]
nss の値は、鍵の格納場所の NSS タイプを指定します。
鍵のペアのラベルを指定します。鍵のペアは、そのラベルによってキーストアから取得できます。
トークン名を指定します。デフォルトでは、トークンは Sun Software PKCS#11 softtoken です。
NSS データベースのディレクトリパスを指定します。デフォルトでは、directory は現在のディレクトリです。
NSS データベースの接頭辞を指定します。デフォルトは接頭辞なしです。
鍵のペアのタイプを指定します。楕円曲線タイプの場合は、必要に応じて曲線名を指定します。曲線名は、listcurves オプションに対する出力として一覧表示されます。
鍵の長さをビット数で指定します。8 で割り切れる数にする必要があります。
ec 鍵タイプの curve= オプションの値として使用できる楕円曲線の名前を一覧表示します。
鍵を格納した場所に応じて、次のコマンドのいずれかを使用します。
% pktool list keystore=file objtype=key infile=key-filename Found n keys. Key #1 - keytype:location (keylen)
$ pktool list objtype=key Enter PIN for keystore: Found n keys. Key #1 - keytype:location (keylen)
% pktool list keystore=nss dir=directory objtype=key
例 13-6 pktool コマンドを使用して鍵のペアを作成する
次の例では、ユーザーがはじめて PKCS #11 キーストアを作成します。RSA 鍵のペアのキーサイズを確認したあと、ユーザーは、アプリケーションのための鍵のペアを生成します。最後に、ユーザーは、キーストア内に鍵のペアが存在することを確認します。ユーザーは、RSA 鍵のペアの 2 番目のインスタンスをハードウェア上に格納できることに気付きました。ユーザーは token 引数を指定しなかったため、鍵のペアは Sun Software PKCS#11 softtoken として格納されます。
# pktool setpin Create new passphrase:Easily remembered, hard-to-detect password Re-enter new passphrase:Retype password Passphrase changed. % cryptoadm list -vm | grep PAIR ... CKM_DSA_KEY_PAIR_GEN 512 3072 . . . . . . . . . X . . . . CKM_RSA_PKCS_KEY_PAIR_GEN 256 8192 . . . . . . . . . X . . . . ... CKM_RSA_PKCS_KEY_PAIR_GEN 256 2048 X . . . . . . . . X . . . . ecc: CKM_EC_KEY_PAIR_GEN,CKM_ECDH1_DERIVE,CKM_ECDSA,CKM_ECDSA_SHA1 % pktool genkeypair label=specialappkeypair keytype=rsa keylen=2048 Enter PIN for Sun Software PKCS#11 softtoken :Type password % pktool list Enter PIN for Sun Software PKCS#11 softtoken :Type password Found 1 keys. Key #1 - keypair: specialappkeypair (2048 bits)
例 13-7 楕円曲線アルゴリズムを使用する鍵のペアを作成する
次の例では、ユーザーが楕円曲線 (ec) 鍵のペアをキーストアに追加し、曲線名を指定したあと、キーストア内に鍵のペアが存在することを確認します。
% pktool genkeypair listcurves secp112r1, secp112r2, secp128r1, secp128r2, secp160k1 . . . c2pnb304w1, c2tnb359v1, c2pnb368w1, c2tnb431r1, prime192v2 prime192v3 % pktool genkeypair label=eckeypair keytype=ec curves=c2tnb431r1 % pktool list Enter PIN for Sun Software PKCS#11 softtoken :Type password Found 2 keys. Key #1 - keypair: specialappkeypair (2048 bits) Key #2 - keypair: eckeypair (c2tnb431r1)
この手順は、PKCS #10 証明書署名要求 (CSR) に署名するために使用されます。PEM または DER 形式の CSR を使用できます。署名プロセスによって X.509 v3 証明書が発行されます。PKCS #10 CSR を生成するには、pktool(1) のマニュアルページを参照してください。
始める前に
自身が認証局 (CA) であり、CSR を受信しており、それがファイル内に格納されています。
署名者の鍵を PKCS #11 キーストア内に格納した場合、signkey は、この非公開鍵を取得するラベルです。
署名者の鍵を NSS キーストアまたはファイルキーストア内に格納した場合、signkey は、この非公開鍵を保持するファイル名です。
CSR のファイル名を指定します。
署名される証明書のシリアル番号を指定します。
署名される証明書のファイル名を指定します。
自分の CA 発行者名を識別名 (DN) 形式で指定します。
signcsr サブコマンドのオプションの引数については、pktool(1) のマニュアルページを参照してください。
たとえば、次のコマンドは、PKCS #11 リポジトリにある署名者の鍵を使用して証明書に署名します。
# pktool signcsr signkey=CASigningKey \ csr=fromExampleCoCSR \ serial=0x12345678 \ outcert=ExampleCoCert2010 \ issuer="O=Oracle Corporation, \ OU=Oracle Solaris Security Technology, L=Redwood City, ST=CA, C=US, \ CN=rootsign Oracle"
次のコマンドは、ファイルにある署名者の鍵を使用して証明書に署名します。
# pktool signcsr signkey=CASigningKey \ csr=fromExampleCoCSR \ serial=0x12345678 \ outcert=ExampleCoCert2010 \ issuer="O=Oracle Corporation, \ OU=Oracle Solaris Security Technology, L=Redwood City, ST=CA, C=US, \ CN=rootsign Oracle"
電子メール、Web サイト、またはその他のメカニズムを使用すると証明書を要求者に配信できます。
たとえば、電子メールを使用して ExampleCoCert2010 ファイルを要求者に送信できます。
プラグインは、キーストア名を指定することによって識別します。KMF にプラグインを追加すると、ソフトウェアは、そのプラグインをキーストア名で識別します。プラグインは、オプションを受け入れるように定義できます。この手順には KMF からプラグインを削除する方法が含まれています。
% /usr/bin/kmfcfg install keystore=keystore-name \ modulepath=path-to-plugin [option="option-string"]
各情報の意味は次のとおりです。
keystore-name – 提供するキーストアの一意の名前を指定します。
path-to-plugin – KMF プラグインのための共有ライブラリオブジェクトのフルパスを指定します。
option-string – 共有ライブラリオブジェクトへの省略可能な引数を指定します。
% kmfcfg list plugin keystore-name:path-to-plugin [(built-in)] | [;option=option-string]
% kmfcfg uninstall keystore=keystore-name % kmfcfg plugin list
例 13-8 オプションを指定して KMF プラグインを呼び出す
次の例では、管理者が KMF プラグインをサイト固有のディレクトリ内に格納します。このプラグインは、debug オプションを受け入れるように定義されています。管理者はプラグインを追加したあと、そのプラグインがインストールされていることを確認します。
# /usr/bin/kmfcfg install keystore=mykmfplug \ modulepath=/lib/security/site-modules/mykmfplug.so # kmfcfg list plugin KMF plugin information: ----------------------- pkcs11:kmf_pkcs11.so.1 (built-in) file:kmf_openssl.so.1 (built-in) nss:kmf_nss.so.1 (built-in) mykmfplug:/lib/security/site-modules/mykmfplug.so # kmfcfg modify plugin keystore=mykmfplug option="debug" # kmfcfg list plugin KMF plugin information: ----------------------- ... mykmfplug:/lib/security/site-modules/mykmfplug.so;option=debug
このプラグインは現在、デバッグモードで動作しています。