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 虚拟防火墙 上启用 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 集成的常规步骤。

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

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

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

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

  3. 为 vSRX 虚拟防火墙 3.0 启用托管标识。

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

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

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

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

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

    在 Microsoft Azure Key Vault 中添加访问策略的步骤如下:

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

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

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

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

      注意:

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

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

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

    注意:

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

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

      注意:

      用于访问 Azure 密钥保管库Microsoft 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

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

示例输出

show security hsm status(当 vSRX 虚拟防火墙初始启动但未启用此功能时,HSM status 命令输出)

示例输出

show security hsm status(与密钥保管库成功集成后的 HSM status 命令输出)

了解 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 所示。

图 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 云中带有 HSM 的 VPN 的组件 Components for VPN with HSM in Microsoft Azure Cloud

这里涉及的组件包括:

  • 在 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 功能,您必须为所涉及的每台设备建立 2 个与 HSM 服务的会话。一个会话使用 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>

    注意:

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

  3. 重定向到 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

  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 不支持 API 删除在 HSM 上创建的密钥对。在 CLI 上发出的 delete keypair 命令将导致从磁盘和密钥哈希中删除公钥组件。不会从 HSM 中删除密钥对。要从 HSM 中删除密钥对,您需要访问 HSM 并手动删除密钥对。如果 Azure 密钥保管库启用了软删除功能,则还需要从密钥对中删除密钥对,然后才能重新使用密钥对名称。

    注意:

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

  6. 私钥签名 — 私钥现在存在于 HSM 中。因此,所有需要私钥的作都已转移到 HSM。这些作包括:

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

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

    • 验证从证书颁发机构收到的本地证书

    • 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 版中引入的命令。在 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) 在线注册和安装本地数字证书。

如果在未指定scepcmpv2关键字的情况下输入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。

  • DC- 域组件

  • CN- 常用名

  • OU- 组织单位名称

  • O- 组织名称

  • SN—设备的序列号

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

  • ST- 州/省/自治区

  • C—国家/地区

所需权限级别

维护和安全

输出字段

输入此命令后,将得到有关请求状态的反馈。

示例输出

命令-名称

示例输出

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