在 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 集成的一般步骤。
更改主加密密码
如果要更改主加密密码,则可以从操作模式运行 request security hsm master-encryption-password set plain-text-password
命令:
建议在更改主加密密码时不要进行任何配置更改。
系统检查是否已配置主加密密码。如果配置了主加密密码,则系统会提示您输入当前的主加密密码。
输入的主加密密码将根据当前主加密密码进行验证,以确保这些主加密密码匹配。如果验证成功,系统将提示您以纯文本形式输入新的主加密密码。系统将要求您输入密钥两次以验证密码。
然后,系统继续使用新的主加密密码重新加密敏感数据。您必须等待此重新加密过程完成,然后才能再次尝试更改主加密密码。
如果加密的主加密密码文件丢失或损坏,系统将无法解密敏感数据。系统只能通过以明文形式重新导入敏感数据并重新加密来恢复。
验证 HSM 的状态
请求安全 HSM 主加密密码
语法
request security hsm master-encryption-password set plain-text-password
发布信息
在 Junos OS 19.4R1 版中引入的命令。
描述
使用此命令设置或替换密码(纯文本)。
选项
plain-text-password | 设置或替换密码(纯文本)。 |
所需权限级别
维护
输出字段
输入此命令时,系统会提供有关请求状态的反馈。
示例输出
请求安全 HSM 主加密密码设置纯文本密码
user@host> request security hsm master-encryption-password set plain-text-password
Enter new master encryption password: Repeat new master encryption password: Binding password with HSM Master encryption password is bound to HSM Encoding master password .. Successfully encoded master password Deleting all previous local certificates, keypairs and certificate requests
显示安全 HSM 状态
语法
show security HSM status
发布信息
在 Junos OS 19.4R1 版中引入的命令。
描述
显示硬件安全模块 (HSM) 的当前状态。您可以使用此 show security hsm status
命令检查 HSM 的状态、主绑定密钥、主加密密码和云供应商详细信息。
选项
此命令没有选项。
所需权限级别
安全
输出字段
表 1 列出了命令show security hsm status
的输出字段。
字段名称 |
字段说明 |
---|---|
|
指定是启用还是禁用 HSM。 |
|
显示 HSM 的主绑定密钥状态,无论是否在 HSM 中创建。HSM 生成加密密钥并对其进行加密,以便这些密钥只能由 HSM 解密。此过程称为绑定。每个 HSM 都有一个主绑定密钥,也称为存储根密钥。 |
|
显示主加密配置状态,无论是否设置。配置的加密数据和哈希由使用 Microsoft 密钥保管库 (HSM) 服务的 vSRX 虚拟防火墙保护。 |
|
显示特定于云供应商的详细信息。 |
示例输出
显示安全 HSM 状态(vSRX 虚拟防火墙初始启动但未启用此功能时输出的 HSM 状态命令)
user@host> show security hsm status
HSM Status: Accessible: no Master Binding Key: not-created Master Encryption Key: not-configured Azure Key Vault: unknown
示例输出
显示安全 HSM 状态(与密钥保管库成功集成后的 HSM 状态命令输出)
user@host> show security hsm status
HSM Status: Accessible: yes Master Binding Key: created Master Encryption Key: configured Azure Key Vault: vsrx3-hsm-kv
参见
了解使用 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 显示了部署方案。

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

这里涉及的组件包括:
在 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。
初始化与 HSM 服务的会话 - 每个需要与 HSM 交互的进程都必须初始化自己的单独会话。对于 VPN 功能,您必须为所涉及的每个设备与 HSM 服务建立 2 个会话。一个会话与 pkid 进程建立,另一个会话与 iked 进程建立。这些与 HSM 服务的会话仅在守护程序的初始化过程中建立一次。如果守护程序重新启动,则会与 HSM 服务建立新会话。使用 HSM 服务成功建立会话后,将返回有效的会话上下文。仅当启用了主加密密钥 (MEK) 时,才会与 HSM 服务建立会话。每个会话都是 vSRX 虚拟防火墙与云 HSM 之间的安全 TLS 连接。
在 HSM 上处理密钥对 — 要在 HSM 上创建和存储密钥对,请使用
request security pki generate-key-pair certificate-id certificate-id-name <size> <type>
命令。注意:术语证书 ID 只是与已生成的密钥对关联的标识符。尚无与证书创建的连接。如果未提及类型和大小,则考虑类型的默认值为 RSA,大小为 2048。
重定向到 HSM — 启用 HSM 后,同一 CLI 命令将重定向到 HSM。将在 HSM 上创建具有给定参数的新密钥对。每个 vSRX 虚拟防火墙创建的密钥将使用每个虚拟机的 UUID 进行标记。您可以登录到云门户,访问密钥并验证所需的属性/操作。每个密钥的 UUID 格式如下:<密钥名称>_<唯一虚拟机实例 ID>。您需要在创建密钥时提供密钥名称。VM 实例是使密钥 ID 在 HSM 服务中唯一的因素。因此,对于已启动并正在运行的每个虚拟机, 虚拟机实例 ID 必须是唯一的。这是由Microsoft Azure确保的。HSM 重定向将是一个定时调用,如果在几秒钟内 x 未收到响应,则会显示一条错误消息
call to HSM failed
。检索公钥信息 — 在 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
。删除密钥对 — 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
。私钥签名 — 私钥现在存在于 HSM 中。因此,所有需要私钥的操作都已卸载到 HSM。操作涉及:
私钥签名操作在以下期间使用:
创建证书签名请求 (CSR)
验证从 CA 收到的本地证书
IKE 协商期间的 RSA 签名
SHA-1 互操作性。Azure 密钥保管库仅支持对 SHA-256 摘要进行私钥签名。
带和不带 HSM 的 CLI 行为
CLI |
Non-HSM |
HSM |
|
在本地创建密钥对 |
在 HSM 上创建密钥对 |
|
在本地创建 CSR |
在创建 CSR 时联系 HSM 进行私钥签名。摘要必须是 SHA-256 |
|
在本地创建 CSR。将 CSR 发送到 CA 服务器并接收证书 |
在创建 CSR 时联系 HSM 进行私钥签名。将 CSR 发送到 CA 服务器并接收证书。摘要必须是 SHA-256 |
|
已将本地证书导出到其他设备 |
不可能,因为密钥对本地不存在 |
|
导出本地显示的密钥对到其他设备 |
不可能,因为密钥对本地不存在 |
|
生成自签名证书 |
联系 HSM 进行签名,然后生成自签名证书 |
|
显示设备上存在的本地证书 |
显示密钥对是在本地或在云端 HSM 生成的 |
请求安全 PKI 本地证书注册 SCEP
语法
request security pki local-certificate enroll scep ca-profile ca-profile name certificate-id certificate-id-name challenge-password challenge-password digest (sha-1 | sha-256) domain-name domain-name email email-address ip-address ip-address ipv6-address ipv6-address logical-system (logical-system-name | all) scep-digest-algorithm (md5 | sha-1) scep-encryption-algorithm (des | des3) subject subject-distinguished-name
发布信息
在 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
未指定 scep
或 cmpv2
关键字,则 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。
|
所需权限级别
维护和安全
输出字段
输入此命令时,系统会提供有关请求状态的反馈。
示例输出
命令名称
user@host> request security pki local-certificate enroll scep certificate-id r3-entrust-scep ca-profile entrust domain-name router3.example.net subject "CN=router3,OU=Engineering,O=example,C=US" challenge-password 123
Certificate enrollment has started. To view the status of your enrollment, check the public key infrastructure log (pkid) log file at /var/log/pkid. Please save the challenge-password for revoking this certificate in future. Note that this password is not stored on the router.
示例输出
vSRX 虚拟防火墙 3.0 的示例输出
user@host> request security pki generate-key-pair certificate-id example
Generated key pair example, key size 2048 bits
user@host> request security pki local-certificate enroll certificate-id ?
Possible completions: <certificate-id> Certificate identifier example
user@host> request security pki generate-key-pair certificate-id Hub
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