この手順では、公開鍵/非公開鍵および証明書、すなわち証明書ペアを作成します。非公開鍵はディスク上のローカル証明書データベースに格納され、ikecert certlocal コマンドを使用して参照できます。公開鍵および証明書は、公開証明書データベースに格納されます。これは ikecert certdb コマンドを使用して参照できます。公開証明書をピアシステムと交換します。この 2 つの証明書が IKEv1 転送の認証に使用されます。
自己署名付き証明書は、CA からの公開鍵証明書よりもオーバーヘッドが少ないのですが、あまり簡単には拡大できません。 CA から発行される証明書とは異なり、自己署名付き証明書は証明書を交換した 2 人の管理者によって確認される必要があります。
始める前に
Network IPsec Management 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、Oracle Solaris 11.2 でのユーザーとプロセスのセキュリティー保護 の割り当てられている管理権利の使用を参照してください。
リモートで管理する場合は、Example 7–1 およびOracle Solaris 11.2 での Secure Shell アクセスの管理 のSecure Shell を使用して ZFS をリモートで管理する方法でセキュアなリモートログイン手順を確認してください。
ikecert certlocal コマンドの引数については、ikecert(1M) のマニュアルページを参照してください。
# ikecert certlocal -ks -m 2048 -t rsa-sha512 \ -D "O=exampleco, OU=IT, C=US, CN=partym" \ -A IP=192.168.13.213 Creating private key. Certificate added to database. -----BEGIN X509 CERTIFICATE----- MIIC1TCCAb2gAwIBAgIEfdZgKjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T a...+ zBGi4QkNdI3f -----END X509 CERTIFICATE-----
ここでは
自己署名付き証明書を作成します。
鍵のサイズを指定します。
使用するアルゴリズムのタイプを指定します。
証明書サブジェクトの X.509 識別名 (DN) を指定します。例は、IKE での公開鍵証明書の使用を参照してください。
証明書の別名またはニックネームを指定します。altname の形式は tag=value です。有効なタグは IP、DNS、email、および DN です。
# ikecert certlocal -ks -m 2048 -t rsa-sha512 \ -D "O=exampleco, OU=IT, C=US, CN=enigma" \ -A IP=192.168.116.16 Creating private key. Certificate added to database. -----BEGIN X509 CERTIFICATE----- MIIC1TCCAb2gAwIBAgIEBl5JnjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T ... y85m6LHJYtC6 -----END X509 CERTIFICATE-----
出力は、証明書の公開部分のエンコード済みバージョンです。この証明書は、電子メールのメッセージに貼り付けても安全です。Step 4 で示すように、受け取り側は正しい証明書をインストールしていることを帯域外で検証する必要があります。
To: admin@enigma.ja.example.com From: admin@party.us.example.com Message: -----BEGIN X509 CERTIFICATE----- MIIC1TCCAb2gAwIBAgIEfdZgKjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T a...+ zBGi4QkNdI3f -----END X509 CERTIFICATE------
To: admin@party.us.example.com From: admin@enigma.ja.example.com Message: ----BEGIN X509 CERTIFICATE----- MIIC1TCCAb2gAwIBAgIEBl5JnjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T ... y85m6LHJYtC6 -----END X509 CERTIFICATE-----
# ikecert certdb -a < /tmp/certificate.eml
このコマンドは、BEGIN タグと END タグの間にあるテキストをインポートします。
たとえば、ほかの管理者に電話して、自分が持つ公開証明書のハッシュが、ほかの管理者のみが持つ非公開証明書のハッシュに一致することを検証できます。
次の例で、Note 1 はスロット 0 の証明書の識別名 (DN) を示します。スロット 0 の非公開証明書は同じハッシュを持つ (注 3 を参照) ため、これらの証明書は同一の証明書ペアです。公開証明書が機能するには、一致するペアを持つ必要があります。certdb サブコマンドは公開部分を示し、certlocal サブコマンドは非公開部分を示します。
partym # ikecert certdb -l Certificate Slot Name: 0 Key Type: rsa (Private key in certlocal slot 0) Subject Name: <O=exampleco, OU=IT, C=US, CN=partym>Note 1 Key Size: 2048 Public key hash: 80829EC52FC5BA910F4764076C20FDCF Certificate Slot Name: 1 Key Type: rsa (Private key in certlocal slot 1) Subject Name: <O=exampleco, OU=IT, C=US, CN=Ada> Key Size: 2048 Public key hash: FEA65C5387BBF3B2C8F16C019FEBC388 partym # ikecert certlocal -l Local ID Slot Name: 0 Key Type: rsa Key Size: 2048 Public key hash: 80829EC52FC5BA910F4764076C20FDCFNote 3 Local ID Slot Name: 1 Key Type: rsa-sha512 Key Size: 2048 Public key hash: FEA65C5387BBF3B2C8F16C019FEBC388 Local ID Slot Name: 2 Key Type: rsa Key Size: 2048 Public key hash: 2239A6A127F88EE0CB40F7C24A65B818
このチェックでは、partym システムが有効な証明書ペアを持つことが検証されました。
公開鍵ハッシュは電話で伝えることができます。
前の手順の partym における Note 3 のハッシュと、enigma における Note 4 を比較します。
enigma # ikecert certdb -l Certificate Slot Name: 0 Key Type: rsa (Private key in certlocal slot 0) Subject Name: <O=exampleco, OU=IT, C=US, CN=Ada> Key Size: 2048 Public key hash: 2239A6A127F88EE0CB40F7C24A65B818 Certificate Slot Name: 1 Key Type: rsa (Private key in certlocal slot 1) Subject Name: <O=exampleco, OU=IT, C=US, CN=enigma> Key Size: 2048 Public key hash: FEA65C5387BBF3B2C8F16C019FEBC388 Certificate Slot Name: 2 Key Type: rsa (Private key in certlocal slot 2) Subject Name: <O=exampleco, OU=IT, C=US, CN=partym> Key Size: 2048 Public key hash: 80829EC52FC5BA910F4764076C20FDCFNote 4
enigma の公開証明書データベースに格納されている最後の証明書の公開鍵ハッシュとサブジェクト名が、前の手順の partym の非公開証明書と一致します。
/etc/inet/ike/config ファイルを編集して、証明書を認識します。
パラメータ cert_trust、remote_addr、および remote_id の値は、リモートシステムの管理者が提供します。
# Explicitly trust the self-signed certs # that we verified out of band. The local certificate # is implicitly trusted because we have access to the private key. cert_trust "O=exampleco, OU=IT, C=US, CN=enigma" # We could also use the Alternate name of the certificate, # if it was created with one. In this example, the Alternate Name # is in the format of an IP address: # cert_trust "192.168.116.16" ## Parameters that may also show up in rules. p1_xform { auth_method preshared oakley_group 5 auth_alg sha256 encr_alg 3des } p2_pfs 5 { label "US-partym to JA-enigma" local_id_type dn local_id "O=exampleco, OU=IT, C=US, CN=partym" remote_id "O=exampleco, OU=IT, C=US, CN=enigma" local_addr 192.168.13.213 # We could explicitly enter the peer's IP address here, but we don't need # to do this with certificates, so use a wildcard address. The wildcard # allows the remote device to be mobile or behind a NAT box remote_addr 0.0.0.0/0 p1_xform {auth_method rsa_sig oakley_group 2 auth_alg sha256 encr_alg aes} }
リモートパラメータには、partym 値を使用します。label キーワードの値がローカルシステム上で一意であることを確認します。
… { label "JA-enigma to US-partym" local_id_type dn local_id "O=exampleco, OU=IT, C=US, CN=enigma" remote_id "O=exampleco, OU=IT, C=US, CN=partym" local_addr 192.168.116.16 remote_addr 0.0.0.0/0 p1_xform {auth_method rsa_sig oakley_group 2 auth_alg sha256 encr_alg aes} }
partym # svcadm enable ipsec/ike:default enigma # svcadm enable ipsec/ike
次のステップ
IPsec ポリシーの設定がまだ完了していない場合、IPsec の手順に戻って IPsec ポリシーを有効にするかリフレッシュしてください。VPN を保護する IPsec ポリシーの例については、IPsec による VPN の保護を参照してください。IPsec ポリシーのその他の例については、IPsec によって 2 つのサーバー間でネットワークトラフィックをセキュリティー保護する方法を参照してください。