Compartir a través de

配置服务器设置,以进行 P2S VPN 网关证书身份验证

本文介绍如何配置所需的 VPN 网关点到站点 (P2S) 服务器设置,以便将运行 Windows、Linux 或 macOS 的单个客户端安全地连接到 Azure 虚拟网络 (VNet)。 当从远程位置连接到虚拟网络时,例如从家里或会议室进行远程通信,可以使用 P2S VPN 连接。 只有少量客户端需要连接到虚拟网络时,也可使用 P2S VPN,而不使用站点到站点 (S2S) VPN。

P2S 连接不需要 VPN 设备或面向公众的 IP 地址。 可对 P2S 使用各种不同的配置选项。 有关点到站点 VPN 的详细信息,请参阅关于点到站点 VPN

点到站点连接的示意图显示如何从计算机连接到 Azure 虚拟网络。

本文中的步骤使用 Azure 门户配置 Azure VPN 网关,以进行点到站点证书身份验证

P2S Azure 证书身份验证连接使用以下项:

  • 基于路由的 VPN 网关(并非基于策略)。 有关 VPN 类型的详细信息,请参阅 VPN 网关设置
  • 适用于根证书的公钥(.cer 文件),已上传到 Azure。 上传证书后,该证书将被视为受信任的证书,用于身份验证。
  • 从根证书生成的客户端证书。 安装在要连接到 VNet 的每个客户端计算机上的客户端证书。 此证书用于客户端身份验证。
  • VPN 客户端配置文件。 使用 VPN 客户端配置文件配置 VPN 客户端。 这些文件包含客户端连接到 VNet 时所需的信息。 必须使用配置文件中的设置对进行连接的每个客户端进行配置。

先决条件

本文假设满足以下先决条件:

  • 一个 Azure 虚拟网络。
  • 与要创建的 P2S 配置和连接的 VPN 客户端兼容的基于路由的 VPN 网关。 要帮助确定所需的 P2S 配置,请参阅 VPN 客户端表。 如果网关使用基本 SKU,请知晓基本 SKU 具有 P2S 限制,且不支持 IKEv2 或 RADIUS 身份验证。 有关详细信息,请参阅网关 SKU 简介

如果还没有与要创建的 P2S 配置兼容的正常运行的 VPN 网关,请参阅创建和管理 VPN 网关。 创建兼容的 VPN 网关,然后返回到本文以配置 P2S 设置。

生成证书

Azure 使用证书对通过点到站点 VPN 连接连接到虚拟网络的客户端进行身份验证。 获得根证书后,即可将公钥信息上传到 Azure。 然后,Azure 就会将该根证书视为通过 P2S 连接到虚拟网络时需要使用的“受信任的”证书。

也可从受信任的根证书生成客户端证书,然后将其安装在每个客户端计算机上。 当客户端发起与虚拟网络的连接时,需使用客户端证书对客户端进行身份验证。

在配置点到站点网关设置之前,必须生成并提取根证书。

生成根证书

获取根证书的 .cer 文件。 你可以使用通过企业解决方案生成的根证书(推荐),或者生成自签名证书。 创建根证书后,将公共证书数据(不是私钥)作为 Base64 编码的 X.509 .cer 文件导出。 稍后,请将此文件上传到 Azure。

  • 企业证书: 如果使用的是企业级解决方案,可以使用现有的证书链。 获取要使用的根证书的 .cer 文件。

  • 自签名根证书: 如果使用的不是企业证书解决方案,请创建自签名根证书。 否则,创建的证书将不兼容 P2S 连接,客户端会在尝试进行连接时收到连接错误。 可以使用 Azure PowerShell、MakeCert 或 OpenSSL。 以下文章中的步骤介绍了如何生成兼容的自签名根证书:

生成客户端证书

在使用点到站点连接连接到 VNet 的每台客户端计算机上,必须安装客户端证书。 请从根证书生成它,然后将它安装在每个客户端计算机上。 如果未安装有效的客户端证书,则当客户端尝试连接到 VNet 时,身份验证会失败。

可以为每个客户端生成唯一证书,也可以对多个客户端使用同一证书。 生成唯一客户端证书的优势是能够吊销单个证书。 否则,如果多个客户端使用相同的客户端证书进行身份验证而你将其撤销,则需为所有使用该证书的客户端生成并安装新证书。

可以通过以下方法生成客户端证书:

  • 企业证书:

    • 如果使用的是企业证书解决方案,请使用通用名称值格式 name@yourdomain.com 生成客户端证书, 而不要使用“域名\用户名”格式。

    • 请确保客户端证书基于“用户”证书模板,该模板将“客户端身份验证”列为用户列表中的第一项。 检查证书的方式是:双击证书,然后在“详细信息”选项卡中查看“增强型密钥用法” 。

  • 自签名根证书: 按照下述某篇 P2S 证书文章中的步骤操作,使创建的客户端证书兼容 P2S 连接。

    从自签名根证书生成客户端证书时,该证书会自动安装在用于生成该证书的计算机上。 如果想要在另一台客户端计算机上安装客户端证书,请以 .pfx 文件格式导出该证书以及整个证书链。 这样做会创建一个 .pfx 文件,其中包含的根证书信息是客户端进行身份验证所必需的。

    这些文章中的步骤可生成兼容的客户端证书,然后你可以导出和分发该证书。

    • 适用于 Windows 10 或更高版本 PowerShell 的说明:按照这些说明进行操作时,需要使用 Windows 10(或更高版本)和 PowerShell 来生成证书。 生成的证书可以安装在任何受支持的 P2S 客户端上。

    • 适用于 MakeCert 的说明:如果无权访问用于生成证书的 Windows 10 或更高版本计算机,则可使用 MakeCert。 虽然 MakeCert 已弃用,但仍可使用它来生成证书。 可以将生成的证书安装在任何受支持的 P2S 客户端上。

    • Linux:请参阅 strongSwanOpenSSL 指令。

添加 VPN 客户端地址池

客户端地址池是指定的专用 IP 地址的范围。 通过点到站点 VPN 进行连接的客户端动态接收此范围内的 IP 地址。 使用专用 IP 地址范围时,该范围不得与要通过其进行连接的本地位置重叠,也不得与要连接到其中的 VNet 重叠。 如果配置了多个协议,并且 SSTP 是其中一个协议,则配置的地址池将在配置的协议之间平均分配。

  1. 在 Azure 门户中,转到 VPN 网关。

  2. 在网关页面上的左侧窗格中,选择“点到站点配置”

  3. 单击“立即配置”,打开配置页。

    “点到站点配置”页 - 地址池的屏幕截图。

  4. 在“点到站点”配置页的“地址池”框中,添加要使用的专用 IP 地址范围。 VPN 客户端动态接收指定范围内的 IP 地址。 主动/被动配置的最小子网掩码为 29 位,主动/主动配置的最小子网掩码为 28 位。

  5. 继续学习下一部分以配置更多设置。

指定隧道和身份验证类型

在本部分,你将指定隧道类型和身份验证类型。 这些设置可能变得复杂。 可以从下拉列表中选择包含多种隧道类型的选项,例如“IKEv2 和 OpenVPN (SSL)”或“IKEv2 和 SSTP (SSL)”。 仅某些隧道类型和身份验证类型的组合可用。

隧道类型和身份验证类型必须对应于要用于连接到 Azure 的 VPN 客户端软件。 当有各种不同的 VPN 客户端从不同的操作系统进行连接时,规划隧道类型和身份验证类型非常重要。 下表显示了与 VPN 客户端软件相关的可用隧道类型和身份验证类型。

VPN 客户端表

身份验证 隧道类型 客户端 OS VPN 客户端
证书
IKEv2、SSTP Windows 本机 VPN 客户端
IKEv2 macOS 本机 VPN 客户端
IKEv2 Linux strongSwan
OpenVPN Windows Azure VPN 客户端
OpenVPN 客户端版本 2.x
OpenVPN 客户端版本 3.x
OpenVPN macOS OpenVPN 客户端
OpenVPN Linux Azure VPN 客户端
OpenVPN 客户端
Microsoft Entra ID
OpenVPN Windows Azure VPN 客户端

注意

如果“点到站点配置”页上未显示隧道类型或身份验证类型,则表示网关使用的是基本 SKU。 基本 SKU 不支持 IKEv2 或 RADIUS 身份验证。 若要使用这些设置,需要删除网关,然后使用另一网关 SKU 重新创建网关。

  1. 对于“隧道类型”,请选择你想要使用的隧道类型。 对于本练习,请从下拉列表中选择“IKEv2 和 OpenVPN(SSL)”。

  2. 对于“身份验证类型”,请从下拉列表中选择“Azure 证书”

    “点到站点配置”页 - 身份验证类型的屏幕截图。

添加另一个公共 IP 地址

如果有主动-主动模式网关,则需要指定第三个公共 IP 地址来配置点到站点。 在示例中,我们使用示例值 VNet1GWpip3 来创建第三个公共 IP 地址。 如果网关未处于主动-主动模式,则无需添加另一个公共 IP 地址。

点到站点配置页 - 公共 IP 地址的屏幕截图。

上传根证书的公钥信息

在本部分中,你会将公共根证书数据上传到 Azure。 上传公共证书数据后,Azure 就会使用它来对连接的客户端进行身份验证。 连接的客户端已安装从受信任的根证书生成的客户端证书。

  1. 确保在前面的步骤中,已将根证书导出为 Base-64 编码的 X.509 (.CER) 文件。 需要以这种格式导出证书,以便使用文本编辑器打开该证书。 不需要导出私钥。

  2. 使用记事本之类的文本编辑器打开该证书。 复制证书数据时,请确保将文本复制为一个连续行:

    证书中数据的屏幕截图。

  3. 转到“虚拟网络网关”->“点到站点配置”页中的“根证书”部分。 仅当已选择“Azure 证书”作为身份验证类型时,此部分才可见。

  4. 在“根证书”部分,最多可以添加 20 个受信任的根证书。

    • 将证书数据粘贴到“公共证书数据”字段中。
    • 将证书命名。

    证书数据字段的屏幕截图。

  5. 本练习不需要其他路由。 有关自定义路由功能的详细信息,请参阅播发自定义路由

  6. 选择页面顶部的“保存”,保存所有配置设置。

生成 VPN 客户端配置文件

VPN 客户端的所有必需配置设置都包含在 VPN 客户端配置文件 zip 文件中。 VPN 客户端配置文件特定于虚拟网络的 P2S VPN 网关配置。 如果生成文件后 P2S VPN 配置有任何更改,例如 VPN 协议类型或身份验证类型出现更改,则需要生成新的 VPN 客户端配置文件,并将新配置应用到所有要连接的 VPN 客户端。 有关 P2S 配置的详细信息,请参阅关于点到站点 VPN

可使用 PowerShell 或 Azure 门户生成客户端配置文件。 以下示例展示了这两种方法。 两种方法之一都会返回相同的 zip 文件。

Azure 门户

  1. 在 Azure 门户中,转到要连接到的虚拟网络的虚拟网络网关。

  2. 在虚拟网络网关页上,选择“点到站点配置”以打开“点到站点配置”页。

  3. 在“点到站点配置”页的顶部,选择“下载 VPN 客户端”。 这不会下载 VPN 客户端软件,它将生成用来配置 VPN 客户端的配置包。 需要几分钟才能生成客户端配置包。 在此期间,在包生成前,可能不会显示任何指示。

    点到站点配置页的屏幕截图。

  4. 生成配置包后,浏览器将显示有一个客户端配置 zip 文件可用。 其名称与网关名称相同。

  5. 解压缩该文件,查看文件夹。 你将使用其中一些或全部文件来配置 VPN 客户端。 生成的文件对应于你在 P2S 服务器上配置的身份验证和隧道类型设置。

配置 VPN 客户端并连接到 Azure

有关配置 VPN 客户端并连接到 Azure 的步骤,请参阅指定隧道和身份验证类型部分中的“VPN 客户端表”。 该表包含提供配置 VPN 客户端软件的详细步骤的文章链接。

添加或删除可信根证书

可以在 Azure 中添加和删除受信任的根证书。 移除根证书后,如果客户端的证书是从该根生成的,则无法对其进行身份验证,因此无法连接。 如果希望客户端进行身份验证和连接,则需安装新客户端证书,该证书是从委托(上传)给 Azure 的根证书生成的。

最多可以将 20 个受信任的根证书 .cer 文件添加到 Azure。 有关说明,请参阅上传受信任的根证书部分。

若要删除受信任的根证书,请执行以下操作:

  1. 导航到虚拟网络网关的“点到站点配置”页。
  2. 在页面的“根证书”部分,找到要删除的证书。
  3. 选择证书旁边的省略号图标,然后选择“删除”。

吊销客户端证书

可以吊销客户端证书。 通过证书吊销列表,可以选择性地拒绝基于单个客户端证书的 P2S 连接。 这不同于删除受信任的根证书。 如果从 Azure 中删除受信任的根证书 .cer,它会吊销由吊销的根证书生成/签名的所有客户端证书的访问权限。 吊销客户端证书而非根证书后,可继续使用从根证书生成的其他证书进行身份验证。

常见的做法是使用根证书管理团队或组织级别的访问权限,并使用吊销的客户端证书针对单个用户进行精细的访问控制。

可以通过将指纹添加到吊销列表来吊销客户端证书。

  1. 检索客户端证书指纹。 有关详细信息,请参阅如何检索证书的指纹
  2. 将信息复制到一个文本编辑器,删除所有空格,使之成为一个连续的字符串。
  3. 导航到虚拟网关的“点到站点配置”页。 此页面正是用来上传受信任的根证书的页面。
  4. 在“吊销的证书”部分,输入证书的友好名称(不必是证书 CN)。
  5. 将指纹字符串复制并粘贴到“指纹”字段。
  6. 指纹将进行验证,并会自动添加到吊销列表。 屏幕上会显示一条消息,指出列表正在进行更新。
  7. 更新完成后,不再可以使用证书来连接。 客户端在尝试使用此证书进行连接时,会收到一条消息,指出证书不再有效。

点到站点常见问题解答

有关常见问题解答,请参阅常见问题解答

后续步骤

连接完成后,即可将虚拟机添加到虚拟网络。 有关详细信息,请参阅虚拟机。 若要详细了解网络和虚拟机,请参阅 Azure 和 Linux VM 网络概述

有关 P2S 故障排除信息,请参阅排查 Azure 点到站点连接问题