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

印刷ビューの終了

更新: 2014 年 9 月
 
 

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

この手順では、公開鍵/非公開鍵および証明書、すなわち証明書ペアを作成します。非公開鍵はディスク上のローカル証明書データベースに格納され、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 をリモートで管理する方法でセキュアなリモートログイン手順を確認してください。

  1. 各 IKEv1 システムで、自己署名付き証明書を ike.privatekeys データベース内に作成します。

    ikecert certlocal コマンドの引数については、ikecert(1M) のマニュアルページを参照してください。

    1. たとえば、partym システムでは、コマンドは次のようになります。
      # 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-----

      ここでは

      –ks

      自己署名付き証明書を作成します。

      –m keysize

      鍵のサイズを指定します。

      –t keytype

      使用するアルゴリズムのタイプを指定します。

      –D dname

      証明書サブジェクトの X.509 識別名 (DN) を指定します。例は、IKE での公開鍵証明書の使用を参照してください。

      –A altname

      証明書の別名またはニックネームを指定します。altname の形式は tag=value です。有効なタグは IPDNSemail、および DN です。


      注 -  –D および –A オプションの値は、192.168.13.213 のように、システムではなく、証明書だけを識別する名前です。実際、これらは証明書ニックネームのため、正しい証明書がピアシステムにインストールされていることを帯域外で検証する必要があります。
    2. enigma システムでは、コマンドは次のようになります。
      # 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-----
  2. 証明書を保存し、リモートシステムに送信します。

    出力は、証明書の公開部分のエンコード済みバージョンです。この証明書は、電子メールのメッセージに貼り付けても安全です。Step 4 で示すように、受け取り側は正しい証明書をインストールしていることを帯域外で検証する必要があります。

    1. たとえば、partym 証明書の公開部分を enigma 管理者に送信します。
      To: admin@enigma.ja.example.com
      From: admin@party.us.example.com
      Message: -----BEGIN X509 CERTIFICATE-----
      MIIC1TCCAb2gAwIBAgIEfdZgKjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T
      a...+
      zBGi4QkNdI3f
      -----END X509 CERTIFICATE------
    2. enigma 管理者から、enigma 証明書の公開部分が送信されます。
      To: admin@party.us.example.com
      From: admin@enigma.ja.example.com
      Message: ----BEGIN X509 CERTIFICATE-----
      MIIC1TCCAb2gAwIBAgIEBl5JnjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T
      ...
      y85m6LHJYtC6
      -----END X509 CERTIFICATE-----
  3. 各システムで、受け取った証明書を公開鍵データベースに追加します。
    1. root が読み取るファイルに管理者の電子メールを保存します。
    2. ファイルを ikecert コマンドにリダイレクトします。
      # ikecert certdb -a < /tmp/certificate.eml 

      このコマンドは、BEGIN タグと END タグの間にあるテキストをインポートします。

  4. その証明書がその管理者からのものであることを相手の管理者に確認します。

    たとえば、ほかの管理者に電話して、自分が持つ公開証明書のハッシュが、ほかの管理者のみが持つ非公開証明書のハッシュに一致することを検証できます。

    1. partym に格納されている証明書を一覧表示します。

      次の例で、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 システムが有効な証明書ペアを持つことが検証されました。

    2. enigma システムが 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 の非公開証明書と一致します。

  5. システムごとに、両方の証明書を信頼します。

    /etc/inet/ike/config ファイルを編集して、証明書を認識します。

    パラメータ cert_trustremote_addr、および remote_id の値は、リモートシステムの管理者が提供します。

    1. たとえば、partym システム上の ike/config ファイルは次のようになります。
      # 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}
      }
    2. enigma システムで、ike/config ファイルにローカルパラメータの enigma 値を追加します。

      リモートパラメータには、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}
      }
  6. ピアシステムで、IKEv1 を有効にします。
    partym # svcadm enable ipsec/ike:default
    enigma # svcadm enable ipsec/ike

次のステップ

IPsec ポリシーの設定がまだ完了していない場合、IPsec の手順に戻って IPsec ポリシーを有効にするかリフレッシュしてください。VPN を保護する IPsec ポリシーの例については、IPsec による VPN の保護を参照してください。IPsec ポリシーのその他の例については、IPsec によって 2 つのサーバー間でネットワークトラフィックをセキュリティー保護する方法を参照してください。