Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

在 vSRX 虚拟防火墙 3.0 上部署 Microsoft Azure 硬件安全模块

Microsoft Azure 密钥保管库硬件安全模块集成概述

Microsoft Azure 密钥保管库硬件安全模块 (HSM) 是一种用作安全机密存储的云服务。您可以安全地存储密钥、密码、证书和其他机密。云供应商提供的这项服务可帮助我们安全地生成、存储和管理加密密钥。vSRX 虚拟防火墙应用程序使用这些加密密钥来保护静态数据,例如私钥、密码和其他敏感数据。Azure 密钥保管库 HSM 也可用作密钥管理解决方案。使用 Azure 密钥保管库,可以轻松创建和控制用于加密数据的加密密钥。当您提供主加密密码时,该密码将用于加密敏感数据并将加密数据 (AES256) 保存在磁盘上。主加密密码也使用在 HSM 中生成和存储的 RSA 密钥对进行保护。

vSRX 虚拟防火墙(mgd 进程)会生成配置哈希。此哈希(和其他敏感数据)使用主加密密码作为 AES-GCM 256 加密的密钥进行保护。

主密码用于保护 Junos OS 管理进程 (mgd) 配置中的机密,例如 RADIUS 密码、IKE 预共享密钥和其他共享密钥。主密码使用主加密密码进行保护。主密码本身不会保存为配置的一部分。评估密码质量的强度,如果使用弱密码,设备会提供反馈。

现在可以使用 HSM 服务保护以纯文本形式存储在 vSRX 虚拟防火墙 3.0 实例上的敏感数据,例如 PKI 私钥和配置。

在 vSRX 虚拟防火墙上启用 Microsoft Azure 密钥保管库 HSM 时,vSRX 虚拟防火墙会创建一个大小为 2048 的 RSA 密钥对并使用它来加密位于 /var/db/certs/common/key-pair 中的 PKI 私钥文件、配置哈希和保存在以下位置的主密码: /config/unrd-master-password.txt

注意:

启用 HSM 之前的现有密钥对将不会加密并被删除。

通过启用 HSM,软件层通过使用 256 位 AES 加密(而不是以明文格式存储)存储信息,利用基础 HSM 服务来保护敏感信息(如私钥、系统主密码等)。每次管理员提交配置时,设备还会生成配置的新 SHA256 哈希。每次系统启动时都会验证此哈希值。如果配置被篡改,验证将失败,设备将无法继续启动。配置的加密数据和哈希都由 HSM 模块使用主加密密码进行保护。

哈希验证在任何提交操作期间执行,方法是根据以前提交中保存的哈希对配置文件执行验证检查。在机箱群集系统中,哈希作为提交过程的一部分在备份系统上独立生成。

仅为当前配置保存哈希,而不为任何回滚配置保存哈希。设备重新启动或关机期间不会生成哈希。

vSRX 虚拟防火墙使用 HSM 加密以下机密:

  • 配置的 SHA256 哈希

  • 设备主密码

  • 设备上的所有密钥对

每个 vSRX 虚拟防火墙 3.0 实例创建的密钥将使用每个虚拟机的 UUID 进行标记和/或命名。您可以登录到云门户,访问密钥并验证其属性或请求的操作。

在 vSRX 虚拟防火墙 3.0 上配置 Microsoft Azure Key Vault HSM

Azure 堆栈上的密钥保管库为所有 Azure 应用程序提供云 HSM 服务。所有应用程序都需要在 Azure 活动目录中注册才能使用密钥保管库等服务。

在 Azure 上运行时,vSRX3.0 与 Microsoft Azure Cloud HSM 集成。您可以登录到云门户,访问密钥,并验证其属性或请求的操作。

对于每个公共云供应商,都需要执行独特的步骤才能将 vSRX 虚拟防火墙与云 HSM 集成。本节提供将 vSRX 虚拟防火墙 3.0 与 Microsoft Azure 密钥保管库 HSM 集成所需的步骤。

您将需要以下列出的项才能将 vSRX 虚拟防火墙与 Microsoft Azure 密钥保管库 HSM 集成:

  • vSRX 虚拟防火墙 3.0 实例

  • Microsoft Azure Key Vault

  • 为 vSRX 虚拟防火墙设置密钥保管库身份验证

  • 用于集成 HSM 的特定于 Microsoft Azure 的配置

Microsoft Azure 密钥保管库是一种云托管的管理服务,允许用户使用受硬件安全模块 (HSM) 保护的密钥对密钥和小机密进行加密。

此过程提供将 Microsoft Azure 密钥保管库 HSM 与 vSRX 虚拟防火墙 3.0 集成的一般步骤。

  1. 在 Microsoft Azure 环境中启动 vSRX 虚拟防火墙 3.0 实例。

    有关启动 vSRX 虚拟防火墙 3.0 实例的信息,请参阅《 Microsoft Azure Cloud vSRX 部署指南》。

  2. 创建密钥保管库。在仪表板中,依次选择“ + 创建资源”、“ 安全性 + 标识”和“ 密钥保管库 ”,如图 1 所示。
    图 1:创建密钥保管库 Create Key Vault

    您需要创建“高级”密钥保管库才能访问 vSRX 虚拟防火墙 3.0 所需的加密密钥功能。创建密钥保管库后,有关如何在保管库中创建和管理密钥和机密的详细信息,请参阅 使用门户管理 Azure Stack 中的密钥保管库

  3. 为 vSRX 虚拟防火墙 3.0 启用托管身份。

    系统分配的托管标识通过将应用程序注册到 Azure Active Directory 来帮助 vSRX 虚拟防火墙向其他服务(示例密钥保管库)进行身份验证,而无需在代码中保存凭据。启用此身份将生成唯一对象 ID,可用于在其他 vSRX 虚拟防火墙实例之间引用该标识。

    若要在 Microsoft Azure 上为 vSRX 虚拟防火墙启用托管标识,需要使用 Azure 门户为 VM 上的 Microsoft Azure 资源配置托管标识,如图 2图 3 所示。

    有关详细信息,请参阅 使用 Azure 门户为 VM 上的 Azure 资源配置托管标识

    图 2:在创建 VM Enable System Assigned Managed Identity During Creation of a VM 期间启用系统分配的托管标识
    图 3:在现有 VM Enable System Assigned Managed Identity on an Existing VM 上启用系统分配的托管标识
  4. 在 Microsoft Azure 密钥保管库中添加访问策略。

    要使 vSRX 虚拟防火墙 3.0 VM 等应用程序访问 Microsoft Azure 密钥保管库,必须启用访问策略。有关如何添加新策略的详细信息,请参阅 对密钥保管库的安全访问 ,请参阅此链接添加新策略。

    在 Microsoft Azure 密钥保管库中添加访问策略的步骤如下:

    1. 转到 Microsoft Azure 门户上的 “密钥保管库资源 ”页。

    2. 单击页面左侧的 访问策略 选项卡。

    3. 单击 新增 选项卡,然后单击 选择主体,您可以在其中搜索创建 vSRX 虚拟防火墙时分配的用户名。

    4. 选择所有 密钥权限 ,然后单击 保存

      注意:

      不要选择任何 授权应用程序

  5. 检查 fxp0(管理)接口状态

    vSRX3.0 使用 fxp0 与 Microsoft Azure Key Vault 进行通信。使用 show interface terse fxp0 命令并确保检查是否已配置 fxp0 并能够 ping 外部服务器。

    注意:

    vSRX 虚拟防火墙 3.0 使用管理界面连接到云 HSM。如果未配置管理接口或未连接管理接口,则无法使用云 HSM 功能。

  6. 启用并开始与密钥保管库通信。
    • 若要启用密钥保管库,请运行 request security hsm set azure-key-vault <name-of-azure-key-vault> 命令。

      注意:

      用于访问 Microsoft Azure 密钥保管库的 URL 通常采用以下格式:https://<name-of-azure-key-vault>.vault.azure.net/keys。

    • 若要与密钥保管库建立通信,请在 HSM 中创建 RSA 密钥对,生成并加密配置哈希,以及加密主密码和 PKI 密钥对文件,请运行 request security hsm master-encryption-password set plain-text-password

    • 系统将提示您输入主加密密码两次,以确保这些密码匹配。验证主加密密码是否符合所需的密码强度。设置主加密密码后,系统会使用主加密密码对敏感数据进行加密,该密码由HSM拥有和保护的MEK加密。

    • 要配置主密码,请运行 set system master-password plain-text-password 以下命令。否则,某些敏感数据将不受 HSM 保护。如果未启用 HSM,主密码将以纯文本格式保存在 /config/unrd-master-password.txt 文件中

    注意:

    为确保主密码不会在 vSRX 虚拟防火墙 3.0 上保存为纯文本,控制台上将显示一个错误,指示在不启用 HSM 的情况下设置主密码不安全,命令操作将被终止。

更改主加密密码

如果要更改主加密密码,则可以从操作模式运行 request security hsm master-encryption-password set plain-text-password 命令:

注意:

建议在更改主加密密码时不要进行任何配置更改。

系统检查是否已配置主加密密码。如果配置了主加密密码,则系统会提示您输入当前的主加密密码。

输入的主加密密码将根据当前主加密密码进行验证,以确保这些主加密密码匹配。如果验证成功,系统将提示您以纯文本形式输入新的主加密密码。系统将要求您输入密钥两次以验证密码。

然后,系统继续使用新的主加密密码重新加密敏感数据。您必须等待此重新加密过程完成,然后才能再次尝试更改主加密密码。

如果加密的主加密密码文件丢失或损坏,系统将无法解密敏感数据。系统只能通过以明文形式重新导入敏感数据并重新加密来恢复。

验证 HSM 的状态

目的

检查与 HSM 的连接。

行动

您可以使用命令 show security hsm status 验证 HSM 的状态。将显示以下信息:

  • 如果 HSM 已启用且可访问或禁用

  • 是否在 HSM 中创建主绑定密钥(RSA 密钥对)

  • 是否配置了主加密密钥 - 主加密密码状态(设置或未设置)

  • 云供应商信息

请求安全 HSM 主加密密码

语法

发布信息

在 Junos OS 19.4R1 版中引入的命令。

描述

使用此命令设置或替换密码(纯文本)。

选项

plain-text-password

设置或替换密码(纯文本)。

所需权限级别

维护

输出字段

输入此命令时,系统会提供有关请求状态的反馈。

示例输出

请求安全 HSM 主加密密码设置纯文本密码

显示安全 HSM 状态

语法

发布信息

在 Junos OS 19.4R1 版中引入的命令。

描述

显示硬件安全模块 (HSM) 的当前状态。您可以使用此 show security hsm status 命令检查 HSM 的状态、主绑定密钥、主加密密码和云供应商详细信息。

选项

此命令没有选项。

所需权限级别

安全

输出字段

表 1 列出了命令show security hsm status的输出字段。

表 1:显示安全 HSM 状态输出字段

字段名称

字段说明

Enabled

指定是启用还是禁用 HSM。

Master Binding Key

显示 HSM 的主绑定密钥状态,无论是否在 HSM 中创建。HSM 生成加密密钥并对其进行加密,以便这些密钥只能由 HSM 解密。此过程称为绑定。每个 HSM 都有一个主绑定密钥,也称为存储根密钥。

Master Encryption Key

显示主加密配置状态,无论是否设置。配置的加密数据和哈希由使用 Microsoft 密钥保管库 (HSM) 服务的 vSRX 虚拟防火墙保护。

Cloud vendor Details

显示特定于云供应商的详细信息。

示例输出

显示安全 HSM 状态(vSRX 虚拟防火墙初始启动但未启用此功能时输出的 HSM 状态命令)

示例输出

显示安全 HSM 状态(与密钥保管库成功集成后的 HSM 状态命令输出)

了解使用 Microsoft Azure Key Vault HSM 服务的 VPN 功能

通过在 vSRX3.0 上集成 Microsoft Azure Key Vault HSM 服务,您现在可以使用 HSM 服务来创建、存储和执行所需的 VPN 密钥对操作。现已在 HSM 服务中启用密钥对创建。现在可以使用使用 HSM 生成的密钥对建立基于 PKI 的 VPN 隧道。配置主加密密钥后,您可以使用 HSM 服务配置 VPN 功能。您只能生成长度为 2048 位和 4096 位的 RSA 密钥对。在 PKID 中创建 CSR 期间进行私钥签名、在 PKID 中验证从 CA 服务器收到的证书期间进行私钥签名以及在 IKED 进行 IKE 协商期间进行私钥签名等操作已从 vSRX 虚拟防火墙卸载,现在由 HSM 服务执行。

注意:

使用 HSM 服务生成密钥对仅适用于 pkid 和 iked 进程。此外,在启用 HSM 服务之前文件系统中的现有密钥对不会加密,并且这些密钥对将被删除。

部署方案

本部分提供了一个部署方案,其中 vSRX 虚拟防火墙 3.0 实例作为虚拟网络中的网关启动,该虚拟网络使用纯 IPsec 连接连接到数据中心。

图 4 显示了部署方案。

图 4:使用 IPsec 连接的 vSRX 虚拟防火墙部署方案 Deployment Scenario of vSRX Virtual Firewall using an IPsec Connection

您可以使用适用于 pkid 进程的 Microsoft Azure 云 HSM 服务生成密钥对,并使用这些密钥对从 CA 服务器获取本地证书。在 IKE 协商期间,使用云 HSM 服务中存在的密钥对进行私钥签名。

使用 HSM 服务在 Microsoft Azure 云中执行的 VPN 功能如图 5 所示。

图 5:Microsoft Azure 云 Components for VPN with HSM in Microsoft Azure Cloud中带有 HSM 的 VPN 组件

这里涉及的组件包括:

  • 在 Microsoft Azure 云中启动的 vSRX 虚拟防火墙 3.0。

  • 对等 - 在 Azure 云中启动第二个 vSRX 虚拟防火墙 3.0 实例。将在第一个 vSRX 虚拟防火墙 3.0 与对等方之间建立隧道。

  • 密钥保管库 - 在 Azure 云中启动的 HSM 服务。您可以在 vSRX 虚拟防火墙 3.0 和 HSM 之间进行交互。并且对等方可以在本地创建和存储密钥对。

  • 证书颁发机构服务器 - vSRX 虚拟防火墙实例可以访问的任何 CA 服务器。CA 服务器在 Azure 云上启动。

此过程提供有关步骤,说明如何通过使用云 HSM 服务对 vSRX 虚拟防火墙进行身份验证来允许从 vSRX 虚拟防火墙访问 HSM。

  1. 初始化与 HSM 服务的会话 - 每个需要与 HSM 交互的进程都必须初始化自己的单独会话。对于 VPN 功能,您必须为所涉及的每个设备与 HSM 服务建立 2 个会话。一个会话与 pkid 进程建立,另一个会话与 iked 进程建立。这些与 HSM 服务的会话仅在守护程序的初始化过程中建立一次。如果守护程序重新启动,则会与 HSM 服务建立新会话。使用 HSM 服务成功建立会话后,将返回有效的会话上下文。仅当启用了主加密密钥 (MEK) 时,才会与 HSM 服务建立会话。每个会话都是 vSRX 虚拟防火墙与云 HSM 之间的安全 TLS 连接。

  2. 在 HSM 上处理密钥对 — 要在 HSM 上创建和存储密钥对,请使用 request security pki generate-key-pair certificate-id certificate-id-name <size> <type> 命令。

    注意:

    术语证书 ID 只是与已生成的密钥对关联的标识符。尚无与证书创建的连接。如果未提及类型和大小,则考虑类型的默认值为 RSA,大小为 2048。

  3. 重定向到 HSM — 启用 HSM 后,同一 CLI 命令将重定向到 HSM。将在 HSM 上创建具有给定参数的新密钥对。每个 vSRX 虚拟防火墙创建的密钥将使用每个虚拟机的 UUID 进行标记。您可以登录到云门户,访问密钥并验证所需的属性/操作。每个密钥的 UUID 格式如下:<密钥名称>_<唯一虚拟机实例 ID>。您需要在创建密钥时提供密钥名称。VM 实例是使密钥 ID 在 HSM 服务中唯一的因素。因此,对于已启动并正在运行的每个虚拟机, 虚拟机实例 ID 必须是唯一的。这是由Microsoft Azure确保的。HSM 重定向将是一个定时调用,如果在几秒钟内 x 未收到响应,则会显示一条错误消息 call to HSM failed

  4. 检索公钥信息 — 在 HSM 上创建密钥对后,我们将检索密钥对的公钥组件。HSM 返回模数和指数。这些组件使用 OpenSSL API 转换为EVP_PKEY结构。然后,公钥结构将作为新条目存储在密钥哈希中。这样,可以在需要时从哈希中检索公钥组件。目前,HSM 不会检测到重复的密钥对,而是在再次收到错误密钥 ID 时,HSM 将覆盖预先存在的密钥对。为了避免这种密钥对覆盖,公钥在创建密钥时保存在哈希中。这样,重复的密钥对创建将在设备级别停止,而无需调用 HSM。

    当您尝试使用相同的名称创建新密钥对时,即使您已删除了以前的密钥对,也会收到错误 error: Failed to generate key pair at HSM. Found a key with the same name at HSM. Use a different certificate id next time. Refer to PKID logs for more details

  5. 删除密钥对 — HSM 不支持用于删除在 HSM 中创建的密钥对的 API。在 CLI 中发出的删除密钥对命令将导致从磁盘和密钥哈希中删除公钥组件。不会从 HSM 中删除密钥对。要从 HSM 中删除密钥对,您需要访问 HSM 并手动删除密钥对。如果 Azure 密钥保管库启用了软删除功能,则还需要从密钥对中删除密钥对,然后才能重复使用密钥对名称。

    注意:

    不支持从文件导出密钥。使用 和 request security pki key-pair export 命令request security pki local-certificate export导出密钥时,您将收到一条错误消息 Export of keypairs/certificate is not supported when HSM is enabled

  6. 私钥签名 — 私钥现在存在于 HSM 中。因此,所有需要私钥的操作都已卸载到 HSM。操作涉及:

    私钥签名操作在以下期间使用:

    • 创建证书签名请求 (CSR)

    • 验证从 CA 收到的本地证书

    • IKE 协商期间的 RSA 签名

    • SHA-1 互操作性。Azure 密钥保管库仅支持对 SHA-256 摘要进行私钥签名。

带和不带 HSM 的 CLI 行为

CLI

Non-HSM

HSM

request security pki generate-key-pair

在本地创建密钥对

在 HSM 上创建密钥对

request security pki generate-certificate-request

在本地创建 CSR

在创建 CSR 时联系 HSM 进行私钥签名。摘要必须是 SHA-256

request security pki local-certificate enroll

在本地创建 CSR。将 CSR 发送到 CA 服务器并接收证书

在创建 CSR 时联系 HSM 进行私钥签名。将 CSR 发送到 CA 服务器并接收证书。摘要必须是 SHA-256

request security pki local-certificate export

已将本地证书导出到其他设备

不可能,因为密钥对本地不存在

request security pki key-pair export

导出本地显示的密钥对到其他设备

不可能,因为密钥对本地不存在

request security pki local-certificate generate-self-signed

生成自签名证书

联系 HSM 进行签名,然后生成自签名证书

show security pki local-certificate

显示设备上存在的本地证书

显示密钥对是在本地或在云端 HSM 生成的

请求安全 PKI 本地证书注册 SCEP

语法

发布信息

在 Junos OS 9.1 版中引入的命令。序列号 (SN) 选项已添加到 Junos OS 12.1X45 版的主题字符串输出字段中。 scep 在 Junos OS 版本 15.1X49-D40 中添加的关键字和 ipv6-address 选项。

从 vSRX 虚拟防火墙 3.0 上的 Junos OS 20.1R1 版开始,您可以使用 Microsoft Azure 密钥保管库硬件安全模块 (HSM) 服务保护 PKID 和 IKED 使用的私钥。您可以使用在 HSM 上生成的密钥对建立基于 PKI 的 VPN 隧道。生成 HSM 密钥对后,证书 ID 下的中心 certificate-id 选项不可用于配置。

从 vSRX 虚拟防火墙 3.0 上的 Junos OS 20.4R1 版开始,您可以使用 AWS 密钥管理服务 (KMS) 保护 PKID 和 IKED 使用的私有密钥。您可以使用 KMS 生成的密钥对建立基于 PKI 的 VPN 隧道。在生成 PKI 密钥对后,证书 ID 下的集线器 certificate-id 选项不可用于配置。

从 Junos OS 版本 22.4R2 开始, logical-system 在 PKI SCEP 证书注册语句中引入。

描述

使用简单证书注册协议 (SCEP) 联机注册并安装本地数字证书。

如果在输入命令时 request security pki local-certificate enroll 未指定 scepcmpv2 关键字,则 SCEP 是注册本地证书的默认方法。

选项

ca-profile ca-profile-name

CA 配置文件名称。

certificate-id certificate-id-name

本地数字证书和公钥/私钥对的名称。

challenge-password password

密码由管理员设置,通常从 CA 的 SCEP 注册网页获取。密码长度最多为 256 个字符。您可以对所需字符强制实施限制。

digest (sha-1 | sha-256)

用于对 RSA 证书(SHA-1 或 SHA-256)进行签名的哈希算法。SHA-1 是默认值。

domain-name domain-name

完全限定域名 (FQDN)。FQDN 为互联网密钥交换 (IKE) 协商提供证书所有者的身份,并提供使用者名称的替代名称。

email email-address

证书持有者的电子邮件地址。

ip-address ip-address

路由器的 IP 地址。

ipv6-address ipv6-address

备用主题的路由器的 IPv6 地址。

logical-system (logical-system-name | all)

逻辑系统的名称或全部。这是可选的。

scep-digest-algorithm (md5 | sha-1)

散列算法摘要,MD5 或 SHA-1;SHA-1 是默认值。

scep-encryption-algorithm (des | des3)

加密算法,DES 或 DES3;DES3 是默认值。

subject subject-distinguished-name

可分辨名称 (DN) 格式,包含域组件、公用名、部门、序列号、公司名称、州和国家/地区,格式如下:DC、CN、OU、O、SN、L、ST、C。

  • DC- 域组件

  • CN- 通用名

  • OU- 组织单位名称

  • O- 组织名称

  • SN- 设备的序列号

    如果在主题字段中定义不带序列号的 SN,则会直接从设备读取序列号并将其添加到证书签名请求 (CSR) 中。

  • ST- 状态

  • C—国家

所需权限级别

维护和安全

输出字段

输入此命令时,系统会提供有关请求状态的反馈。

示例输出

命令名称

示例输出

vSRX 虚拟防火墙 3.0 的示例输出