上記の手順を使用して Thales Luna ソフトウェア バンドルを NSX Advanced Load Balancer Controller にインストールした後、HSM 証明書を使用して仮想サービスを保護するようにコントローラを構成できます。

Thales Luna HSM の自動 CSR ワークフローの詳細については、「CSR 自動化のための証明書管理の統合」を参照してください。

手順 1:HSM グループを作成し、HSM デバイスを HSM グループに追加します。

最初に、コントローラの bash シェルで次のコマンドを使用して HSM サーバの証明書を取得します。次の例では、2 台のサーバ 1.1.1.11 および 1.1.1.13 から証明書を取得しています。

username@avi:~$ sudo scp [email protected]:server.pem hsmserver11.pem
username@avi:~$ sudo scp [email protected]:server.pem hsmserver13.pem

これらの証明書の内容は、HSM グループの作成時に使用されます。NSX Advanced Load Balancer は、システム内のすべてのノードに対して信頼できる認証をサポートします。これは、HSM と相互作用するコントローラとサービス エンジンの IP アドレスを指定することで可能になります。HSM グループ エディタの次のオプションを使用します。Thales Luna サーバ証明書は、Thales Luna アプライアンスを管理するセキュリティ チームからも提供できます。いずれの場合も、これらの証明書へのアクセス権を持つことは、NSX Advanced Load Balancer で HSM 構成を作成するための前提条件です。

デフォルトでは、SE は管理ネットワークを使用して HSM と相互作用します。CSP では、NSX Advanced Load Balancer は HSM の相互作用のための専用ネットワークの使用もサポートします。また、CSP プラットフォームでは、HSM 通信用のコントローラで専用のインターフェイスを使用できます。

GUI から HSM グループを作成する手順は次のとおりです。

  1. 目的のテナントに切り替え、[テンプレート] > [セキュリティ] > [HSM グループ] の順に移動します。

  2. [作成] をクリックし、[名前] フィールドに適切な名前を入力します。

  3. [タイプ] として [Thales Luna HSM] を選択します。

  4. [HSM アドレス] フィールドに、目的の Thales Luna アプライアンスの IP アドレスと、以前に取得したそれぞれのサーバ証明書を指定します。

  5. この段階でそれぞれの HSM パーティション パスワードが利用可能な場合、クライアントに割り当てられたパーティションの [シリアル番号][パスワード] を入力します。それ以外の場合は、以下で説明するクライアント登録手順の後に行うことができます。

  6. [ファイルのインポート] をクリックし、サーバの CA 証明書を選択します。



  7. [追加] をクリックして、グループに複数の HSM を含めます。



  8. HSM との通信に使用するネットワークを選択し、クライアント IP アドレスを [追加] します。



    HSM 通信用に専用の SE またはコントローラ インターフェイスが構成されている場合は、[専用インターフェイス] ボックスをオンにして、リストされている IP アドレスがサービス エンジンまたはコントローラ上の目的の専用インターフェイスの IP アドレスであることを確認します。

  9. すべてのクライアント IP アドレスが検証されたら、[保存] をクリックします。

注:

NSX Advanced Load Balancer Controller と、SE グループに関連付けられているすべてのサービス エンジンは、HSM に確実にアクセスできるように、リストに少なくとも 1 つの IP アドレスを持つ必要があります。Thales Luna アプライアンスは、登録されていないクライアント IP アドレスからの通信を許可しないため、この手順は非常に重要です。

手順 2:クライアントを HSM デバイスに登録して相互認証を行う

この場合のクライアントは NSX Advanced Load Balancer Controller とサービス エンジンです。相互認証を行うために、生成されたクライアント証明書を Thales Luna アプライアンスに登録する必要があります。これは、以下の手順 3 および 4 に示すように直接、または HSM アプライアンスを管理する担当のセキュリティ チームにクライアント証明書を送信することによって実行できます。

以下は、クライアントを HSM デバイスに登録する手順です。

  1. [編集] アイコンの横にあるアイコンをクリックすると、クライアント証明書のダウンロードで生成された証明書のウィンドウが開きます。

  2. 証明書のダウンロード アイコンをクリックします。



  3. ダウンロード後、証明書を .pem として保存します。この例では、scp を使用して HSM にコピーする前に、証明書を 10.160.100.220.pem として保存する必要があります。



    scp 10.160.100.220.pem [email protected]:
  4. HSM にクライアントを登録します。

     username@avi:~$ ssh [email protected]
     [email protected]'s password:
     Last login: Thu May 12 19:52:00 2016 from 12.97.16.194
     Luna SA 7.3.3-7 Command Line Shell - Copyright (c) 2001-2014 SafeNet, Inc. All rights reserved.
     [1.1.1.11] lunash: client register -c 10.160.100.220 -i 10.160.100.220 'client register' successful. Command Result : 0 (Success)
     [1.1.1.11] lunash: client assignPartition -c 10.160.100.220 -p par43 'client assignPartition' successful. Command Result : 0 (Success)
     [1.1.1.11] lunash: exit
  5. すべての HSM デバイスに対して手順 1 と 2 を繰り返します。

    注:

    登録を検証する手順 6 は、上記の手順で構成されたすべての HSM アプライアンスにすべてのクライアント証明書が登録された後にのみ実行する必要があります。まず、HSM グループを編集し、(パーティション)パスワードが HSM グループに入力された状態にします。

  6. クライアント登録が完了したら、vtl verify コマンドの出力を確認して、相互認証が成功したことを確認します。

    username@avi:~$ /opt/avi/scripts/safenet.py -p [HSM-GROUP] -i [CLIENT IP OF CONTROLLER REGISTERED WITH HSM] -t [TENANT_NAME] -c "/usr/safenet/lunaclient/bin/vtl verify
     The following Luna SA Slots/Partitions were found:
     
     Slot	Serial #        	Label
     ====	================	=====
        1	   1##########1 	par1
        2	   1##########3 	par1
     

手順 3:HSM デバイス間で HA を設定する(オプション)

NSX Advanced Load Balancer は、HSM デバイス間の HA の構成を自動化します。HA を構成する前に、listSlots コマンドを使用してクライアントが HSM に登録されていることを確認します。このコマンドは、設定する HSM デバイスに関する詳細を提供します。これらのデバイス間で HA を設定するには、このコマンドの出力に表示されるシリアル番号が必要です。

以下にリストされているパーティションのシリアル番号が、Thales Luna アプライアンスで設定される、またはセキュリティ チームによって提供されるシリアル番号と一致することを確認します。これは、HSM グループ オブジェクトの構成とも一致する必要があります。内部的には、クライアントが HSM の複数のパーティションに登録されている場合、シリアル番号を使用して HA を構成します。

username@avi:~$ /opt/avi/scripts/safenet.py -p [HSM-GROUP] -i [CLIENT IP OF CONTROLLER REGISTERED WITH HSM] -t [TENANT_NAME] -c "/usr/safenet/lunaclient/bin/vtl listSlots"

Number of slots: 5

The following slots were found:

Slot #        Description        Label           Serial #     Status
========= =================== ================== ========== ============
slot #1   LunaNet Slot         par43             156908040  Present
slot #2   LunaNet Slot         par40             156936072  Present
slot #3   -                    -                 -     Not present
slot #4   -                    -                 - Not present
slot #5   -                    -               -Not present

必要に応じて適切なテナントに切り替えた後、次のように CLI から HA を有効にできます。

[username:avi]: > switchto tenant [TENANT_NAME]
[username:avi]: > configure hardwaresecuritymodulegroup safenet-network-hsm-1
[username:avi]: hardwaresecuritymodulegroup>  hsm type hsm_type_safenet_luna
[username:avi]: hardwaresecuritymodulegroup:hsm> sluna
[username:avi]: hardwaresecuritymodulegroup:hsm:sluna> is_ha
[username:avi]: hardwaresecuritymodulegroup:hsm:sluna> save
[username:avi]: hardwaresecuritymodulegroup:hsm:sluna> save
[username:avi]: hardwaresecuritymodulegroup> save

または、HSM グループを選択して編集し、[HA の有効化] チェックボックスを選択して、Web インターフェイスでこの操作を実行することもできます。このオプションは、複数のサーバで HSM グループを編集する場合にのみ使用できます。

HA が設定されたら、listSlots コマンドの出力を確認して、avi_group 仮想カード スロットが構成されていることを確認します。

[username:avi]: /opt/avi/scripts/safenet.py -p [HSM-GROUP] -i [CLIENT IP OF CONTROLLER REGISTERED WITH HSM] -t [TENANT_NAME] -c "/usr/safenet/lunaclient/bin/vtl listSlots"

Number of slots: 1

The following slots were found:

Slot #       Description           Label     Serial #   Status
========= ================= ==================== ========== ============
slot #1   HA Virtual Card Slot avi_group         1529532014 Present

手順 4:HSM グループを SE グループに関連付ける

HSM グループを仮想サービスで使用される SE グループに追加する必要があります。

  • 適切なテナントに切り替え、[インフラストラクチャ] > [クラウド リソース] > [サービス エンジン グループ] の順に移動します。

  • 目的のサービス エンジン グループの [サービス エンジン グループ] エディタを起動します。

  • [詳細] タブをクリックします。

  • ドロップダウン メニューから目的の HSM グループを選択します。

  • [保存] をクリックします。



これは、CLI シェルを使用して構成することもできます。

[username:avi]: > switchto tenant [TENANT_NAME]
[username:avi]: > configure serviceenginegroup [SE-GROUP]
[username:avi]: hardwaresecuritymodulegroup_ref

手順 5:アプリケーション証明書とキーを追加する

アプリケーション証明書とキーの作成

コントローラは HSM のクライアントとして設定され、HSM でキーと証明書を作成するために使用できます。RSA タイプと EC タイプの両方のキー/証明書の作成がサポートされています。

ブラウザを使用して、コントローラの管理 IP アドレスに移動します。NSX Advanced Load Balancer が 3 ノードの Controller クラスタとして展開されている場合は、クラスタの管理 IP アドレスに移動します。この手順を使用して、キーと証明書を作成します。作成プロセスは、他のキー/証明書の作成と似ています。HSM にバインドされたキー/証明書の場合は、オブジェクトの作成時に HSM グループを選択します。

  1. [テンプレート] > [セキュリティ] > [SSL/TLS 証明書] の順に移動します。

  2. [作成] > [アプリケーション証明書] をクリックします。

  3. 証明書の [名前] を入力し、[タイプ] を選択します。

  4. [HSM グループ] を選択します。

  5. 必要に応じて他のフィールドを構成し、[保存] をクリックして、[保存] ボタンをクリックすることでここで選択した HSM グループで提供される HSM に自己署名 EC 証明書を作成します。



アプリケーション証明書とキーのインポート

NSX Advanced Load Balancer は、ユーザー インターフェイスと CLI を使用した証明書と SSL キーのインポートをサポートします。

ユーザー インターフェイスの使用:

  1. [テンプレート] > [セキュリティ] > [SSL/TLS 証明書] の順に移動します。

  2. [作成] > [アプリケーション証明書] をクリックします。

  3. 証明書の名前を入力し、[タイプ]として [インポート] を選択します。

  4. [HSM グループ] を選択します。

  5. [証明書] で、[HSM へのプライベート キーのインポート] をクリックします。

    注:

    証明書のインポート時に HSM へのプライベート キーのインポートを有効にするオプションを利用できます。

  6. [証明書ファイルのアップロードまたは貼り付け] で、テキスト領域に証明書をコピーして貼り付けるか、[ファイルのインポート] をクリックします。

    [キー (PEM) または PKCS12 ファイルのアップロードまたは貼り付け] で、プライベート キーをコピーして貼り付けるか、[ファイルのインポート] をクリックします。



  7. キー ファイルがパスフレーズで保護されている場合は、SSL/TLS キーのパスフレーズ を入力します。

  8. [検証] をクリックします。NSX Advanced Load Balancer は、キー ファイルと証明書ファイルの有効性を検証します。

  9. [保存] をクリックします。

CLI の使用:

CLI を使用して証明書をインポートするには、import_key_to_hsm フィールドを true に設定し、NSX Advanced Load Balancer を使用する Thales Luna HSM アプリケーションへの SSL プライベート キーのインポートを有効にします。

注:

形式が SSL_PEM で、タイプが ssl_certificate_type_virtualservice で、正しいハードウェア セキュリティ モジュール グループが参照されていることを確認します。

[admin:10-79-169-143]: sslkeyandcertificate> import_key_to_hsm
[admin:10-79-169-143]: sslkeyandcertificate> hardwaresecuritymodulegroup_ref hsmgrp_smoke
[admin:10-79-169-143]: sslkeyandcertificate> where
Tenant: admin
Cloud: Default-Cloud
+---------------------------------+------------------------------------------------------------------+
| Field                           | Value                                                            |
+---------------------------------+------------------------------------------------------------------+
| name                            | hsmcertcli1                                                      |
| type                            | SSL_CERTIFICATE_TYPE_VIRTUALSERVICE                              |
| certificate                     |                                                                  |
|   certificate                   | -----BEGIN CERTIFICATE-----                                      |
|                                 | MIIEajCCAtKgAwIBAgITK1bjogOClJ3ft8lgMjNoF6Np7jANBgkq             |
|                                 | hkiG9w0BAQsF                                                     |
|                                 | ADBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwY |
|                                 |-truncated value-                                                 |
|                                 | UW85UY9zxUCwJuTEZxiC051SFm3z5aa9csU9iN/R                         |
|                                 | -----END CERTIFICATE-----                                        |
|                                 |                                                                  |
| key                             | -----BEGIN RSA PRIVATE KEY-----                                  |
|                                 | MIIG5AIBAAKCAYEA2iv7eOxO2dvpNSOkOXu17szzs06dTjDd                 |
|                                 | oWrDe5KpUSODASpw                                                 |
|                                 | MbOTewS5reEUXr9QFlJcNILV7p7t0QXVC9IaDiis/Zu9Vv6bAfwpX0lE0TKamWs  |
|                                 | -truncated value-                                                |
|                                 | MUUEW4O7E0U1nnyjGaZXUjc9og==                                     |
|                                 | -----END RSA PRIVATE KEY-----                                    |
|                                 |                                                                  |
| hardwaresecuritymodulegroup_ref | hsmgrp_smoke                                                     |
| format                          | SSL_PEM                                                          |
| certificate_base64              | False                                                            |
| key_base64                      | False                                                            |
| enable_ocsp_stapling            | False                                                            |
| import_key_to_hsm               | True                                                             |
+---------------------------------+------------------------------------------------------------------+
[admin:10-79-169-143]: sslkeyandcertificate>
[admin:10-79-169-143]: sslkeyandcertificate> save

インポートされた証明書とキーは次のようになります。

{
    "certificate": {
        "certificate": "-----BEGIN CERTIFICATE-----\nMIIEajCCAtKgAwIBAgITK1bjogOClJ3ft8lgMjNoF6Np7jANBgkqhkiG9w0BAQsF\nADBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwY\nSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMB4XDTIyMDUxNjEyMTM1NloXDTIzMDUx\nMTEyMTM1NlowRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAf\nBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCAaIwDQYJKoZIhvcNAQEB\nBQADggGPADCCAYoCggGBANor+3jsTtnb6TUjpDl7te7M87NOnU4w3aFqw3uSqVEj\ngwEqcDGzk3sEua3hFF6/UBZSXDSC1e6e7dEF1QvSGg4orP2bvVb+mwH8KV9JRNEy\nmplrEtdG65bcBi8qcwO3i5hoZ2v44JTTgNqxXU7VWJhwAKYp0sLiAibB2bCIoA4R\n6jS4tSGiPGAZ0MweISNjbNqWB2S0amDYOm4uNgDgfrmvoZQWzv7mfzxFZ0mlsmT4\ny0iI4+Q0Xb0aScFUhjbOBMp3lPK2fHwrVRN2jrxx73MhUT/5H9Qu43w+Bl1vm4Zq\nukI18BWsgY3xC0vGpKewOOSUC/G0ifrkj4AzNEEyTj0H0cuOSq13DqhYunklC3PT\nXvtaJ3UPEks2uKuf3WiJw694Tmj4/3Grsr0aSWASM8KAn1xWYFv/x7Py+S5sb/LU\n9i3tQ4OmzquuHsjM6TkhVXMGoG+MXxkjt0ORrpBRCZMQ47kftRDG5+irHUzMtb2M\nTG+Sv7C0rwlRqOiA12kE/wIDAQABo1MwUTAdBgNVHQ4EFgQUpMgAuXurOfm3/tco\npr5vcQ4XZlcwHwYDVR0jBBgwFoAUpMgAuXurOfm3/tcopr5vcQ4XZlcwDwYDVR0T\nAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAYEAvzlt70zmImS+qc6D5rVltpaA\nJH7dFCqVI1l4rs8oB351JZEJTq2K/BWY/qbsu0Cj1NvgDXD1aIKdSDZRsgL8dzFd\nsh/R+gEdVnH4GxSwmw2UF05+y4PfAl0Wt3XMoT8klMpcTeiazqIqp3wBLJSOz9XR\n2aAbhOyYtanaCYjfv/lRpTPRpYWwmkfjQUXc35r4Er9LNx6aBnSf1Yx7fp+QPX2H\nfUB1ob33j9RfKP05juPPcTL9MCMNx47j76DGEIO+CxIDbGQFpB6Zc0zdmmbbksaQ\n3csvymx4kzlTjBTu+Hvjyc/8f3w5iYtaXjJ8Qkfq0Wp6ryCpQ2/0r0fBKjDSuadW\nMBKtHUrhZwjXC4mgQXHrVIE1FURjWhbIPnZ8STpUmzzbq2fTNaypO6mG6tS9d67U\nQgwdM5+cXD38VzYU9O3Rapkj1GGA5VERJNN0z98wwmjhFhp+CvYEZiffEeTdwF7e\nUW85UY9zxUCwJuTEZxiC051SFm3z5aa9csU9iN/R\n-----END CERTIFICATE-----\n"
    },
    "format": "SSL_PEM",
    "certificate_base64": false,
    "key_base64": false,
    "enable_ocsp_stapling": false,
    "type": "SSL_CERTIFICATE_TYPE_VIRTUALSERVICE",
    "name": "test_hsm_cert",
    "import_key_to_hsm": true,
    "hardwaresecuritymodulegroup_ref": "https://10.79.169.143/api/hardwaresecuritymodulegroup/hardwaresecuritymodulegroup-0913a0e7-80cc-4776-9239-f15f4aae5875",
    "key": "-----BEGIN RSA PRIVATE KEY-----\nMIIG5AIBAAKCAYEA2iv7eOxO2dvpNSOkOXu17szzs06dTjDdoWrDe5KpUSODASpw
     -truncated value
     \nwxRUASLZBLflLElHjigA73ealVNTMUUEW4O7E0U1nnyjGaZXUjc9og==\n-----END RSA PRIVATE KEY-----\n"
}

手順 6:仮想サービスで HSM サポートを有効にする

  • Controller Web 管理インターフェイスで、[アプリケーション] > [仮想サービス] の順に移動します

  • [新規] または [編集] をクリックします。

  • 新しい仮想サービスを構成する場合は、VIP の名前を指定します。

  • [SSL 証明書] ドロップダウン メニューから HSM 証明書を選択します。

  • 仮想サービス名と VIP アドレスを指定します。

  • [サービス ポート] セクションで SSL を有効にします。

  • [詳細] をクリックします。[詳細] ページで、HSM グループが追加された SE グループを選択します。

  • [保存] をクリックします。

これで、仮想サービスが Thales Luna Network HSM デバイスの暗号化/復号化サービスを使用して SSL/TLS トラフィックを処理する準備ができました。