この手順では、公開鍵証明書を作成して署名します。非公開鍵および証明書は、IKEv2 の PKCS #11 ソフトトークンキーストアに格納されます。公開鍵証明書を IKE ピアに送信し、次に相手の公開証明書を送信してもらいます。
自己署名付き証明書を使用するすべての IKE システムでこの手順を実行します。
始める前に
証明書を使用するには、IKEv2 公開鍵証明書用キーストアを作成および使用する方法を完了している必要があります。
Network IPsec Management 権利プロファイルが割り当てられている管理者になる必要があります。プロファイルシェルを使用している必要があります。詳細は、Oracle Solaris 11.2 でのユーザーとプロセスのセキュリティー保護 の割り当てられている管理権利の使用を参照してください。
リモートで管理する場合は、Example 7–1 およびOracle Solaris 11.2 での Secure Shell アクセスの管理 のSecure Shell を使用して ZFS をリモートで管理する方法でセキュアなリモートログイン手順を確認してください。
ikev2cert gencert コマンドの引数の説明については、pktool(1) のマニュアルページで pktool gencert keystore=pkcs11 サブコマンドを確認してください。
subject 引数の形式については、IKE での公開鍵証明書の使用を参照してください。
# pfbash # ikev2cert gencert \ label="ITpartym" \ subject="O=exampleco, OU=IT, C=US, CN=partym" \ serial=0x87654321 keytype=rsa keylen=2048 Enter PIN for Sun Software PKCS#11 softtoken: xxxxxxxx
次のエラーメッセージは、PIN の入力ミスまたはキーストアが初期化されていないことを示しています。
Error creating certificate and keypair: keystore error: CKR_PIN_INCORRECT libkmf error: KMF_ERR_AUTH_FAILED Error creating certificate and keypair: keystore error: CKR_PIN_EXPIRED: PIN expired and must be changed libkmf error: KMF_ERR_BAD_PARAMETER: invalid parameter
# ikev2cert gencert \ label=ITenigma \ subject="O=exampleco, OU=IT, C=US, CN=enigma" \ serial=0x86428642 keytype=rsa keylen=2048 Enter PIN for Sun Software PKCS#11 softtoken: xxxxxxxx
enigma # /usr/sbin/ikev2cert list objtype=both Enter PIN for Sun Software PKCS#11 softtoken: xxxxxxxx No. Key Type Key Len. Key Label ---------------------------------------------------- Asymmetric private keys: 1) RSA ITenigma Asymmetric public keys: 1) RSA ITenigma Certificates: 1) X.509 certificate Label: ITenigma Subject: C=US, O=exampleco, OU=IT, CN=enigma Issuer: C=US, O=exampleco, OU=IT, CN=enigma Not Before: April 10 21:49:00 2014 GMT Not After: April 10 21:49:00 2015 GMT Serial: 0x86426420 Signature Algorithm: sha1WithRSAEncryption X509v3 Subject Key Identifier: 34:7a:3b:36:c7:7d:4f:60:ed:ec:4a:96:33:67:f2:ac:87:ce:35:cc SHA1 Certificate Fingerprint: 68:07:48:65:a2:4a:bf:18:f5:5b:95:a5:01:42:c0:26:e3:3b:a5:30
outformat=pem オプションを使用すると、公開証明書が直接インポートに適した形式のファイルに書き出されます。ラベルはキーストア内で証明書を識別します。
# cd /tmp # ikev2cert export objtype=cert outformat=pem outfile=filename label=label Enter PIN for Sun Software PKCS#11 softtoken:xxxxxxxx
たとえば、両方のシステムを管理している場合は sftp コマンドを使用して相手システムの証明書を取得します。
enigma # sftp jdoe@partym:/tmp/ITpartym.pem /tmp/ITpartym.pem.cert partym # sftp jdoe@enigma:/tmp/ITenigma.pem /tmp/ITenigma.pem.cert
パスワードを入力するよう求められます。この例では、jdoe にパスワードを指定してください。
キーストアに証明書をロードする前に、正しい証明書を受け取っていることを確認する必要があります。
たとえば、partym の管理者が、partym の証明書を含むファイルのダイジェストを相手の管理者に電子メールで送信します。enigma の管理者は、enigma の証明書ファイルのダイジェストを電子メールで送信します。
partym # digest -a sha1 /tmp/ITpartym.pem c6dbef4136c0141ae62110246f288e5546a59d86 enigma # digest -a sha1 ITenigma.pem 6b288a6a6129d53a45057065bd02b35d7d299b3a
enigma # digest -a sha1 /tmp/ITpartym.pem.cert c6dbef4136c0141ae62110246f288e5546a59d86 partym # digest -a sha1 /tmp/ITenigma.pem.cert 6b288a6a6129d53a45057065bd02b35d7d299b3a
ダイジェストは一致する必要があります。一致しない場合は、ファイルをキーストアにインポートしないでください。証明書の妥当性を検証する別の方法については、Example 9–3 を参照してください。
証明書をキーストアにインポートする場合、システム上で証明書を一意に識別するラベルを証明書に割り当てる必要があります。ラベルは、公開鍵とその公開鍵証明書を関連付けます。
enigma# ikev2cert import label=ITpartym1 infile=/tmp/ITpartym.pem.cert
partym# ikev2cert import label=ITenigma1 infile=/tmp/ITenigma.pem.cert
そのリストと Step 2 のリストを比較します。たとえば、enigma キーストアに partym の証明書が追加されています。
enigma # /usr/sbin/ikev2cert list objtype=both Enter PIN for Sun Software PKCS#11 softtoken: xxxxxxxx No. Key Type Key Len. Key Label ---------------------------------------------------- Asymmetric private keys: 1) RSA ITenigma Asymmetric public keys: 1) RSA ITenigma Certificates: 1) X.509 certificate Label: ITenigma Subject: C=US, O=exampleco, OU=IT, CN=enigma Issuer: C=US, O=exampleco, OU=IT, CN=enigma Not Before: April 10 21:49:00 2014 GMT Not After: April 10 21:49:00 2015 GMT Serial: 0x86426420 Signature Algorithm: sha1WithRSAEncryption X509v3 Subject Key Identifier: 34:7a:3b:36:c7:7d:4f:60:ed:ec:4a:96:33:67:f2:ac:87:ce:35:cc SHA1 Certificate Fingerprint: 68:07:48:65:a2:4a:bf:18:f5:5b:95:a5:01:42:c0:26:e3:3b:a5:30 2) X.509 certificate Label: ITpartym1 Subject: C=US, O=exampleco, OU=IT, CN=partym Issuer: C=US, O=exampleco, OU=IT, CN=partym Not Before: April 10 21:40:00 2014 GMT Not After: April 10 21:40:00 2015 GMT Serial: 0x87654321 Signature Algorithm: sha1WithRSAEncryption X509v3 Subject Key Identifier: ae:d9:c8:a4:19:68:fe:2d:6c:c2:9a:b6:06:55:b5:b5:d9:d9:45:c6 SHA1 Certificate Fingerprint: 83:26:44:29:b4:1f:af:4a:69:0d:87:c2:dc:f4:a5:1b:4f:0d:36:3b
pfedit コマンドを使用して /etc/inet/ike/ikev2.config ファイルを編集します。
## ... Global transform that applies to any rule without a declared transform ikesa_xform { dh_group 21 auth_alg sha512 encr_alg aes } ## ... Any self-signed ## end-entity certificates must be present in the keystore or ## they will not be trusted. { label "partym-enigma" auth_method cert local_id DN = "O=exampleco, OU=IT, C=US, CN=partym" remote_id DN = "O=exampleco, OU=IT, C=US, CN=enigma" } ...
リモートパラメータには、partym の証明書の DN をその値として使用します。label キーワードの値がローカルシステム上で一意であることを確認します。
… ikesa_xform { dh_group 21 auth_alg sha512 encr_alg aes } … { label "enigma-partym" auth_method cert local_id DN = "O=exampleco, OU=IT, C=US, CN=enigma" remote_id DN = "O=exampleco, OU=IT, C=US, CN=partym" } ...
# /usr/lib/inet/inikev2.d -c
続行する前に、入力ミスや不正確な記述を修正してください。
# svcs ikev2 STATE STIME FMRI disabled Sep_07 svc:/network/ipsec/ike:ikev2
partym # svcadm enable ipsec/ike:ikev2 enigma # svcadm enable ipsec/ike:ikev2
この例では、証明書が 2 年間有効であることを管理者が指定します。
# ikev2cert gencert \ > label=DBAuditV \ > serial=0x12893467235412 \ > subject="O=exampleco, OU=DB, C=US, CN=AuditVault" \ > altname=EMAIL=auditV@example.com \ > keytype=ec curve=secp521r1 hash=sha512 \ > lifetime=2-year使用例 9-3 公開鍵証明書をそのフィンガープリントで検証する
この例では、管理者が証明書のフィンガープリントを使用して証明書を検証します。この方法のデメリットは、管理者がフィンガープリントを表示する前に、ピアの証明書をキーストアにインポートする必要があることです。
管理者は証明書をインポートして、ikev2cert list objtype=cert コマンドでそれを一覧表示したあと、その出力から証明書のフィンガープリントをコピーして相手のシステム管理者に送信します。
SHA1 Certificate Fingerprint: 83:26:44:29:b4:1f:af:4a:69:0d:87:c2:dc:f4:a5:1b:4f:0d:36:3b
検証が失敗した場合は、証明書をインポートした管理者が証明書とその公開鍵をキーストアから削除する必要があります。
# ikev2cert delete label=label-name Enter PIN for Sun Software PKCS#11 softtoken: xxxxxxxx 1 public key(s) found, do you want to delete them (y/N) ? y 1 certificate(s) found, do you want to delete them (y/N) ? y
次のステップ
IPsec ポリシーの設定がまだ完了していない場合、IPsec の手順に戻って IPsec ポリシーを有効にするかリフレッシュしてください。VPN を保護する IPsec ポリシーの例については、IPsec による VPN の保護を参照してください。IPsec ポリシーのその他の例については、IPsec によって 2 つのサーバー間でネットワークトラフィックをセキュリティー保護する方法を参照してください。