この手順では、公開鍵証明書を作成して署名します。非公開鍵および証明書は、IKEv2 の PKCS #11 ソフトトークンキーストアに格納されます。公開鍵証明書を IKE ピアに送信し、次に相手の公開証明書を送信してもらいます。
自己署名付き証明書を使用するすべての IKE システムでこの手順を実行します。
始める前に
証明書を使用するには、IKEv2 公開鍵証明書用キーストアを作成および使用する方法を完了している必要があります。
Network IPsec Management 権利プロファイルが割り当てられている管理者になる必要があります。プロファイルシェルを使用している必要があります。詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護 の 割り当てられている管理権利の使用を参照してください。
リモートで管理する場合は、セキュアなリモートログイン手順について、使用例 27およびOracle Solaris 11.3 での Secure Shell アクセスの管理 の Secure Shell を使用して ZFS をリモートで管理する方法を参照してください。
ikev2cert gencert コマンドの引数の説明については、pktool(1) のマニュアルページで pktool gencert keystore=pkcs11 サブコマンドを確認してください。
subject 引数の形式については、IKE での公開鍵証明書の使用を参照してください。
# pfbash # ikev2cert gencert \ label="IThost2" \ subject="O=exampleco, OU=IT, C=US, CN=host2" \ 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=IThost1 \ subject="O=exampleco, OU=IT, C=US, CN=host1" \ serial=0x86428642 keytype=rsa keylen=2048 Enter PIN for Sun Software PKCS#11 softtoken: xxxxxxxx
host1 # /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 IThost1 Asymmetric public keys: 1) RSA IThost1 Certificates: 1) X.509 certificate Label: IThost1 Subject: C=US, O=exampleco, OU=IT, CN=host1 Issuer: C=US, O=exampleco, OU=IT, CN=host1 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 コマンドを使用して相手システムの証明書を取得します。
host1 # sftp jdoe@host2:/tmp/IThost2.pem /tmp/IThost2.pem.cert host2 # sftp jdoe@host1:tmp/IThost1.pem /tmp/IThost1.pem.cert
パスワードを入力するよう求められます。この例では、jdoe にパスワードを指定してください。
キーストアに証明書をロードする前に、正しい証明書を受け取っていることを確認する必要があります。
たとえば、host2 の管理者は、host2 の証明書を含むファイルのダイジェストをほかの管理者に電子メールで送信します。host1 の管理者は、host1 の証明書ファイルのダイジェストを電子メールで送信します。
host2 # digest -a sha1 /tmp/IThost2.pem c6dbef4136c0141ae62110246f288e5546a59d86 host1 # digest -a sha1 IThost1.pem 6b288a6a6129d53a45057065bd02b35d7d299b3a
host1 # digest -a sha1 /tmp/IThost2.pem.cert c6dbef4136c0141ae62110246f288e5546a59d86 host2 # digest -a sha1 /tmp/IThost1.pem.cert 6b288a6a6129d53a45057065bd02b35d7d299b3a
ダイジェストは一致する必要があります。一致しない場合は、ファイルをキーストアにインポートしないでください。証明書の妥当性を検証する別の方法については、使用例 38を参照してください。
証明書をキーストアにインポートする場合、システム上で証明書を一意に識別するラベルを証明書に割り当てる必要があります。ラベルは、公開鍵とその公開鍵証明書を関連付けます。
host1 # ikev2cert import label=IThost2 infile=/tmp/IThost2.pem.cert
host2 # ikev2cert import label=IThost1 infile=/tmp/IThost1.pem.cert
このリストとStep 2 のリストを比較します。たとえば、host1 キーストアに host2 の証明書が追加されています。
host1 # /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 IThost1 Asymmetric public keys: 1) RSA IThost1 Certificates: 1) X.509 certificate Label: IThost1 Subject: C=US, O=exampleco, OU=IT, CN=host1 Issuer: C=US, O=exampleco, OU=IT, CN=host1 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: IThost2 Subject: C=US, O=exampleco, OU=IT, CN=host2 Issuer: C=US, O=exampleco, OU=IT, CN=host2 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 "host2-host1" auth_method cert local_id DN = "O=exampleco, OU=IT, C=US, CN=host2" remote_id DN = "O=exampleco, OU=IT, C=US, CN=host1" } ...
リモートパラメータには、host2 の証明書の DN をその値として使用します。label キーワードの値がローカルシステム上で一意であることを確認します。
… ikesa_xform { dh_group 21 auth_alg sha512 encr_alg aes } … { label "host1-host2" auth_method cert local_id DN = "O=exampleco, OU=IT, C=US, CN=host1" remote_id DN = "O=exampleco, OU=IT, C=US, CN=host2" } ...
# /usr/lib/inet/inikev2.d -c
続行する前に、入力ミスや不正確な記述を修正してください。
# svcs ikev2 STATE STIME FMRI disabled Sep_07 svc:/network/ipsec/ike:ikev2
host2 # svcadm enable ipsec/ike:ikev2 host1 # 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=rsa hash=sha512 keylen=3072 \ > lifetime=2-year使用例 38 公開鍵証明書をそのフィンガープリントで検証する
この例では、管理者が証明書のフィンガープリントを使用して証明書を検証します。この方法のデメリットは、管理者がフィンガープリントを表示する前に、ピアの証明書をキーストアにインポートする必要があることです。
管理者は証明書をインポートして、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 つのサーバー間でネットワークトラフィックをセキュリティー保護する方法を参照してください。