在使用上述步骤将 Thales Luna 软件包安装到 NSX Advanced Load Balancer 控制器 后,可以配置控制器以使用 HSM 证书保护虚拟服务。

有关 Thales Luna HSM 的自动化 CSR 工作流的更多信息,请参见 CSR 自动化的证书管理集成

步骤 1:创建 HSM 组并将 HSM 设备添加到该组中

首先,在控制器 Bash Shell 上使用以下命令以获取 HSM 服务器的证书。以下示例从两个服务器 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 地址后,单击保存

注:

与 SE 组关联的 NSX Advanced Load Balancer Controller 和所有服务引擎必须在列表中至少具有 1 个 IP 地址,以确保可以访问 HSM。该步骤是非常重要的,因为 Thales Luna 设备不允许来自未注册的客户端 IP 地址的通信。

步骤 2:在 HSM 设备中注册客户端以进行相互身份验证

在这种情况下,客户端是 NSX Advanced Load Balancer 控制器 和服务引擎,需要在 Thales Luna 设备中注册生成的客户端证书以进行相互身份验证。可以直接按照下面的步骤 3 和步骤 4 所示完成该操作,也可以将客户端证书发送给管理 HSM 设备的相关安全团队以完成该操作。

以下是在 HSM 设备中注册客户端的步骤:

  1. 单击编辑图标旁边的图标,打开客户端证书窗口,然后下载生成的证书。

  2. 单击证书下载图标。



  3. 在下载后,将证书保存为 .pem。在该示例中,需要将证书保存为 10.160.100.220.pem,然后再安全复制 (scp) 到 HSM。



    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。

    注:

    只有在上面配置的所有 HSM 设备中注册所有客户端证书后,才需要执行步骤 6 以验证注册。首先,确保编辑(分区)密码以在 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 设备之间设置高可用性(可选)

NSX Advanced Load Balancer 自动在 HSM 设备之间配置高可用性。在配置高可用性之前,请确保使用 listSlots 命令在 HSM 中注册客户端。此命令提供有关要设置的 HSM 设备的详细信息。需要使用在该命令的输出中提供的序列号,以便在这些设备之间设置高可用性。

确认下面列出的分区序列号与 Thales Luna 设备上设置的序列号或安全团队提供的序列号匹配。它还必须与 HSM 组对象中的配置匹配。在内部,如果在 HSM 上的多个分区中注册了客户端,则可以使用该序列号配置高可用性。

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 中启用高可用性,如下所示。

[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

或者,也可以在 Web 界面中完成该操作:选择 HSM 组,并对其进行编辑以选中启用高可用性复选框。只有在编辑具有多个服务器的 HSM 组时,才能使用该选项。

在设置高可用性后,验证 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 Shell 配置该内容:

[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 节点控制器集群,请导航到集群的管理 IP 地址。使用此过程可创建密钥和证书。创建过程与任何其他密钥/证书的创建过程类似。对于绑定到 HSM 的密钥/证书,请在创建对象时选择 HSM 组。

  1. 导航到模板 > 安全性 > SSL/TLS 证书

  2. 单击创建 > 应用程序证书

  3. 输入证书名称并选择类型

  4. 选择 HSM 组

  5. 根据需要,配置其他字段,然后单击保存,以便在此处单击保存按钮时选择的 HSM 组中提供的 HSM 上创建自签名 EC 证书。



导入应用程序证书和密钥

NSX Advanced Load Balancer 支持通过 UI 和 CLI 导入证书和 SSL 密钥。

使用 UI:

  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 将 SSL 私钥导入到 Thales Luna HSM 应用程序。

注:

确保格式为 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 支持

  • 在控制器 Web 管理界面中,导航到应用程序 > 虚拟服务

  • 单击新建编辑

  • 如果配置新的虚拟服务,请指定 VIP 的名称。

  • SSL 证书下拉菜单中选择 HSM 证书。

  • 指定虚拟服务名称和 VIP 地址。

  • 服务端口部分中,启用 SSL。

  • 单击高级。在高级页面上,选择添加了 HSM 组的 SE 组。

  • 单击保存

虚拟服务现已准备好使用 Thales Luna Network HSM 设备的加密/解密服务处理 SSL/TLS 流量。