在 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 虚拟防火墙 上启用 Azure 密钥保管库 HSM Microsoft时,vSRX 虚拟防火墙会创建一个大小为 2048 的 RSA 密钥对并使用它来加密位于 /var/db/certs/common/key-pairs 中的 PKI 私钥文件、配置哈希和主密码,该密码保存在: /config/unrd-master-password.txt 中。
启用 HSM 之前的现有密钥对不会被加密并被删除。
通过启用 HSM,软件层将利用底层 HSM 服务来保护敏感信息(如私钥、系统主密码等),并使用 256 位 AES 加密(而非以明文格式存储)来保护这些信息。每次管理员提交配置时,设备还会为配置生成新的 SHA256 哈希。每次系统启动时,都会验证此哈希值。如果配置被篡改,验证将失败,设备将无法继续启动。配置的加密数据和散列都使用主加密密码受 HSM 模块的保护。
在任何提交作期间,通过根据先前提交中保存的哈希对配置文件执行验证检查来执行哈希验证。在机箱群集系统中,作为提交过程的一部分,散列会在备份系统上独立生成。
散列仅保存对于当前配置,而不保存对于任何回滚配置。重新启动或关闭设备期间不会生成散列。
vSRX 虚拟防火墙使用 HSM 对以下密钥进行加密:
配置的 SHA256 散列
设备主密码
设备上的所有密钥对
将由每个 vSRX 虚拟防火墙 3.0 实例创建的密钥将使用每个虚拟机的 UUID 进行标记和/或命名。您可以登录云门户,访问密钥,并验证其属性或请求的作。
在 vSRX 虚拟防火墙 3.0 上配置 Microsoft Azure 密钥保管库 HSM
Azure Stack 上的密钥保管库为所有 Azure 应用程序提供云 HSM 服务。所有应用程序都需要在 Azure Active Directory 中注册才能使用 Key Vault 等服务。
在 Azure 上运行时,vSRX3.0 与 Microsoft Azure Cloud HSM 集成。您可以登录云门户,访问密钥,并验证其属性或请求的作。
对于每个公共云供应商,都需要执行一些独特的步骤才能将 vSRX 虚拟防火墙与云 HSM 集成。本部分提供集成 vSRX 虚拟防火墙 3.0 与 Microsoft Azure 密钥保管库 HSM 所需的步骤。
要将 vSRX 虚拟防火墙与 Microsoft Azure 密钥保管库 HSM 集成,您需要以下列出的项目:
vSRX 虚拟防火墙 3.0 实例
Microsoft Azure 密钥保管库
为 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 虚拟防火墙保护。 |
|
显示特定于云供应商的详细信息。 |
示例输出
show security hsm status(当 vSRX 虚拟防火墙初始启动但未启用此功能时,HSM status 命令输出)
user@host> show security hsm status
HSM Status: Accessible: no Master Binding Key: not-created Master Encryption Key: not-configured Azure Key Vault: unknown
示例输出
show security hsm status(与密钥保管库成功集成后的 HSM status 命令输出)
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 密钥保管库 HSM 服务的 VPN 功能
通过在 vSRX3.0 上集成 Microsoft Azure 密钥保管库 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 功能,您必须为所涉及的每台设备建立 2 个与 HSM 服务的会话。一个会话使用 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>。注意:术语 certificate-id 只是与已生成的密钥对相关联的标识符。尚无与证书创建的连接。如果未提及类型和大小,则考虑 RSA 类型和 2048 大小的默认值。
重定向到 HSM — 启用 HSM 时,相同的 CLI 命令将被重定向到 HSM。在 HSM 上创建具有给定参数的新密钥对。每个 vSRX 虚拟防火墙创建的密钥将使用每个虚拟机的 UUID 进行标记。您可以登录云门户,访问密钥并验证所需的属性/作。每个密钥的 UUID 格式如下:<key-name>_<唯一 vm-instance id>。您需要在创建密钥时提供密钥名称。VM 实例是使密钥 ID 在 HSM 服务中唯一的因素。因此,对于每个已启动并正在运行的 VM, 虚拟机实例 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 不支持 API 删除在 HSM 上创建的密钥对。在 CLI 上发出的 delete keypair 命令将导致从磁盘和密钥哈希中删除公钥组件。不会从 HSM 中删除密钥对。要从 HSM 中删除密钥对,您需要访问 HSM 并手动删除密钥对。如果 Azure 密钥保管库启用了软删除功能,则还需要从密钥对中删除密钥对,然后才能重新使用密钥对名称。
注意:不支持从文件导出密钥。使用
request security pki local-certificate export和request security pki key-pair export命令导出密钥时,您将收到一条错误消息Export of keypairs/certificate is not supported when HSM is enabled。私钥签名 — 私钥现在存在于 HSM 中。因此,所有需要私钥的作都已转移到 HSM。这些作包括:
私钥签名作在以下期间使用:
创建证书签名请求 (CSR)
验证从证书颁发机构收到的本地证书
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 版中引入的命令。在 Junos OS 12.1X45 版中,将序列号 (SN) 选项添加到主题字符串输出字段。 scep 在 Junos OS 15.1X49-D40 版中添加了关键字和 ipv6-address 选项。
从 vSRX 虚拟防火墙 3.0 上的 Junos OS 20.1R1 版开始,可以使用 Microsoft Azure 密钥保管库硬件安全模块 (HSM) 服务保护 PKID 和 IKED 使用的私有密钥。您可以使用在 HSM 上生成的密钥对建立基于 PKI 的 VPN 隧道。生成 HSM 密钥对后,certificate-id 下的 hub certificate-id 选项不可用于配置。
从 vSRX 虚拟防火墙 3.0 上的 Junos OS 20.4R1 版开始,您可以使用 AWS Key Management Service (KMS) 保护 PKID 和 IKED 使用的私有密钥。您可以使用 KMS 生成的密钥对建立基于 PKI 的 VPN 隧道。生成 PKI 密钥对后,certificate-id 下的 hub certificate-id 选项无法进行配置。
从 Junos OS 22.4R2 版开始, logical-system 在 PKI SCEP 证书注册语句中引入。
描述
使用简单证书注册协议 (SCEP) 在线注册和安装本地数字证书。
如果在未指定scep或cmpv2关键字的情况下输入request security pki local-certificate enroll命令,则 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


