Oracle® Solaris 11.2 でのネットワークのセキュリティー保護

印刷ビューの終了

更新: 2014 年 9 月
 
 

自己署名付き公開鍵証明書により IKEv2 を構成する方法

この手順では、公開鍵証明書を作成して署名します。非公開鍵および証明書は、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 をリモートで管理する方法でセキュアなリモートログイン手順を確認してください。

  1. キーストアに自己署名付き証明書を作成します。

    ikev2cert gencert コマンドの引数の説明については、pktool(1) のマニュアルページで pktool gencert keystore=pkcs11 サブコマンドを確認してください。

    subject 引数の形式については、IKE での公開鍵証明書の使用を参照してください。


    注 -  証明書にラベルを付けます。ラベルはローカルキーストア内で証明書およびそれに対応する鍵を識別します。
    1. たとえば、partym システムでは、コマンドは次のようになります。
      # 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

      ヒント  -  pktool コマンド構文の表示は、証明書エントリの一部が誤って入力されていることを示します。許可されていないアルゴリズムの使用、二重引用符と等号の抜け、およびその他の入力ミスがないかコマンドを確認してください。無効な引数を見つける 1 つの方法として、コマンドを取得したあと、引数を 1 回につき 1 つずつ削除します。
    2. enigma システムでは、コマンドは次のようになります。
      # 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
  2. (オプション) 鍵および証明書を一覧表示します。
    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

    ヒント  -  デフォルトのハッシュアルゴリズムは SHA1 です。強力な署名アルゴリズムで証明書を作成するには、keytype オプションと、keytype=rsa hash=sha384 などの別のハッシュアルゴリズムを使用します。オプションについては、pktool(1) のマニュアルページを参照してください。
  3. 相手システムに証明書を送信します。
    1. 各システムで、証明書だけをファイルにエクスポートします。

      outformat=pem オプションを使用すると、公開証明書が直接インポートに適した形式のファイルに書き出されます。ラベルはキーストア内で証明書を識別します。

      # cd /tmp
      	# ikev2cert export objtype=cert outformat=pem outfile=filename label=label
      	Enter PIN for Sun Software PKCS#11 softtoken:xxxxxxxx
    2. 証明書を電子メール、sftp、または ssh でほかのシステムに送信します。

      たとえば、両方のシステムを管理している場合は sftp コマンドを使用して相手システムの証明書を取得します。

      enigma # sftp jdoe@partym:/tmp/ITpartym.pem /tmp/ITpartym.pem.cert
      	partym # sftp jdoe@enigma:/tmp/ITenigma.pem /tmp/ITenigma.pem.cert

      パスワードを入力するよう求められます。この例では、jdoe にパスワードを指定してください。

  4. 証明書が同一であることを確認します。

    キーストアに証明書をロードする前に、正しい証明書を受け取っていることを確認する必要があります。

    1. 各システムにエクスポートされたファイルのダイジェストを作成します。

      たとえば、partym の管理者が、partym の証明書を含むファイルのダイジェストを相手の管理者に電子メールで送信します。enigma の管理者は、enigma の証明書ファイルのダイジェストを電子メールで送信します。

      partym # digest -a sha1 /tmp/ITpartym.pem
      	c6dbef4136c0141ae62110246f288e5546a59d86
      
      	enigma # digest -a sha1 ITenigma.pem
      	6b288a6a6129d53a45057065bd02b35d7d299b3a
      	
    2. 相手のシステムで、最初のシステムの証明書を含むファイルに digest コマンドを実行します。
      enigma # digest -a sha1 /tmp/ITpartym.pem.cert
      	c6dbef4136c0141ae62110246f288e5546a59d86
      
      	partym # digest -a sha1 /tmp/ITenigma.pem.cert
      	6b288a6a6129d53a45057065bd02b35d7d299b3a

      ダイジェストは一致する必要があります。一致しない場合は、ファイルをキーストアにインポートしないでください。証明書の妥当性を検証する別の方法については、Example 9–3 を参照してください。

  5. 検証のあと、相手システムの証明書を自身のキーストアにインポートします。

    証明書をキーストアにインポートする場合、システム上で証明書を一意に識別するラベルを証明書に割り当てる必要があります。ラベルは、公開鍵とその公開鍵証明書を関連付けます。

    enigma# ikev2cert import label=ITpartym1 infile=/tmp/ITpartym.pem.cert
    partym# ikev2cert import label=ITenigma1 infile=/tmp/ITenigma.pem.cert
  6. (オプション) キーストア内のオブジェクトを一覧表示します。

    そのリストと 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
  7. 各システムで、証明書を IKEv2 ルールで使用します。

    pfedit コマンドを使用して /etc/inet/ike/ikev2.config ファイルを編集します。

    1. たとえば、partym システムでは、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"
      	}
      	...
    2. enigma システムでは、ikev2.config ファイルの local_id の値に enigma の証明書の DN を使用します。

      リモートパラメータには、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"
      	}
      	...
  8. (オプション) 各システムで、ikev2.config ファイルの妥当性を確認します。
    # /usr/lib/inet/inikev2.d -c

    続行する前に、入力ミスや不正確な記述を修正してください。

  9. 各システムで、IKEv2 サービスインスタンスの状態を確認します。
    # svcs ikev2
    	STATE          STIME    FMRI
    	disabled       Sep_07   svc:/network/ipsec/ike:ikev2
  10. 各システムで、IKEv2 サービスインスタンスを有効にします。
    partym # svcadm enable ipsec/ike:ikev2
    
    	enigma # svcadm enable ipsec/ike:ikev2
使用例 9-2  ライフタイムの制限を付けた自己署名付き証明書を作成する

この例では、証明書が 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 つのサーバー間でネットワークトラフィックをセキュリティー保護する方法を参照してください。