使用证书身份验证配置与 VNet 的点到站点连接(经典):Azure 门户

Note

本文针对经典部署模型撰写。 如果不熟悉 Azure,建议改用资源管理器部署模型。 资源管理器部署模型是最新的部署模型,提供比经典部署模型更多的选项和更强的功能兼容性。 有关部署模型的详细信息,请参阅了解部署模型

若要查看本文的资源管理器版本,请从下面的下拉列表或左侧的目录中将其选中。

本文介绍如何在经典部署模型中使用 Azure 门户通过点到站点连接来创建 VNet。 此配置使用证书(不管是自签名的还是 CA 颁发的)来验证正在进行连接的客户端。 也可使用不同的部署工具或部署模型创建此配置,方法是从以下列表中选择另一选项:

点到站点 (P2S) VPN 网关用于创建从单个客户端计算机到虚拟网络的安全连接。 若要从远程位置连接到 VNet,例如从家里或会议室进行远程通信,则可使用点到站点 VPN。 如果只有一些客户端需要连接到 VNet,则可使用 P2S VPN 这种解决方案来代替站点到站点 VPN。 可通过从客户端计算机启动连接来建立 P2S VPN 连接。

Important

经典部署模型仅支持 Windows VPN 客户端,并使用安全套接字隧道协议 (SSTP),一种基于 SSL 的 VPN 协议。 为了支持非 Windows VPN 客户端,VNet 必须使用资源管理器部署模型创建。 除了 SSTP,资源管理器部署模型还支持 IKEv2 VPN。 有关详细信息,请参阅关于 P2S 连接

点到站点连接示意图

点到站点证书身份验证连接需要以下项:

  • 动态 VPN 网关。
  • 适用于根证书的公钥(.cer 文件),已上传到 Azure。 此证书被视为可信证书,用于身份验证。
  • 从根证书生成的客户端证书,安装在每个要连接的客户端计算机上。 此证书用于客户端身份验证。
  • 必须生成 VPN 客户端配置包,并将其安装在每个连接的客户端计算机上。 客户端配置包为操作系统上已有的本机 VPN 客户端配置连接到 VNet 所需的信息。

点到站点连接不需要 VPN 设备或面向公众的本地 IP 地址。 VPN 连接基于 SSTP(安全套接字隧道协议)创建。 在服务器端,我们支持 SSTP 1.0、1.1 和 1.2 版。 客户端决定要使用的版本。 对于 Windows 8.1 及更高版本,SSTP 默认使用 1.2。

有关点到站点连接的详细信息,请参阅本文末尾的点到站点常见问题解答

示例设置

可使用以下值创建测试环境,或参考这些值以更好地理解本文中的示例:

  • 名称:VNet1
  • 地址空间:192.168.0.0/16
    对于此示例,我们只使用一个地址空间。 可以在 VNet 中使用多个地址空间,如图所示。
  • 子网名称:FrontEnd
  • 子网地址范围:192.168.1.0/24
  • 订阅: 如果有多个订阅,请确保使用正确的订阅。
  • 资源组:TestRG
  • 位置:中国北部
  • 连接类型:点到站点
  • 客户端地址空间:172.16.201.0/24。 使用此点到站点连接连接到 VNet 的 VPN 客户端接收来自指定池的 IP 地址。
  • 网关子网:192.168.200.0/24。 网关子网必须使用名称“GatewaySubnet”。
  • 大小: 选择要使用的网关 SKU。
  • 路由类型:动态

1.创建虚拟网络和 VPN 网关

开始之前,请确保拥有 Azure 订阅。 如果还没有 Azure 订阅,可以注册一个试用帐户

第 1 部分:创建虚拟网络

如果还没有虚拟网络,请创建一个。 这些屏幕截图仅供参考。 请务必替换成自己的值。 若要使用 Azure 门户创建 VNet,请执行以下步骤:

  1. 从浏览器导航到 Azure 门户,并在必要时用 Azure 帐户登录。
  2. 单击“创建资源” > “网络” > “虚拟网络”。
  3. 从靠近“虚拟网络”页底部的“选择部署模型”列表中,选择“经典”,然后单击“创建”。

    选择部署模型

  4. 在“创建虚拟网络”页上,配置 VNet 设置。 在此页上,添加第一个地址空间和单个子网地址范围。 完成创建 VNet 之后,可以返回并添加其他子网和地址空间。

    创建虚拟网络页

  5. 验证“订阅” 是否正确。 可以使用下拉列表更改订阅。
  6. 单击“资源组” ,并选择现有资源组,或通过键入新的资源组名称创建新资源组。 如果要创建新资源组,请根据计划的配置值来命名资源组。 有关资源组的详细信息,请访问 Azure Resource Manager 概述
  7. 接下来,选择 VNet 的“位置” 设置。 该位置确定要部署到此 VNet 的资源所在的位置。
  8. 如果希望能够在仪表板上轻松查找 VNet,请选择“固定到仪表板”,并单击“创建”。

    固定到仪表板

  9. 单击“创建”后,仪表板上会出现一个磁贴,反映 VNet 的进度。 创建 VNet 时,该磁贴会更改。

    创建虚拟网络磁贴

  10. 虚拟网络创建以后,就会看到“已创建”。
  11. 添加 DNS 服务器(可选)。 创建虚拟网络后,可以添加 DNS 服务器的 IP 地址进行名称解析。 指定的 DNS 服务器 IP 地址应该是可以解析 VNet 中资源名称的 DNS 服务器的地址。
    要添加 DNS 服务器,请打开虚拟网络的设置,单击 DNS 服务器,并添加要使用的 DNS 服务器的 IP 地址。

第 2 部分:创建网关子网和动态路由网关

本步骤创建网关子网和动态路由网关。 在经典部署模型的 Azure 门户中,可以通过相同的配置页创建网关子网和网关。 网关子网仅用于网关服务。 切勿将任何资源(例如 VM 或任何其他服务)直接部署到网关子网。

  1. 在门户中,导航到要为其创建网关的虚拟网络。
  2. 在虚拟网络页的“概览”页上的“VPN 连接”部分,单击“网关”。

    单击创建网关

  3. 在“新建 VPN 连接”页中,选择“点到站点”。

    点到站点连接类型

  4. 对于“客户端地址空间”,请添加 IP 地址范围。 这是 VPN 客户端在连接时要从中接收 IP 地址的范围。 使用专用 IP 地址范围时,该范围不得与要通过其进行连接的本地位置重叠,也不得与要连接到其中的 VNet 重叠。 可以删除自动填充的范围,并添加要使用的专用 IP 地址范围。 本示例演示自动填充的范围。 删除它可以添加所需的值。

    客户端地址空间

  5. 选中“立即创建网关”复选框。 单击“可选网关配置”打开“网关配置”页。

    单击可选网关配置

  6. 单击“子网配置所需的设置”添加网关子网。 尽管创建的网关子网最小可为 /29,但建议至少选择 /28 或 /27,创建包含更多地址的更大子网。 这样便可以留出足够多的地址,满足将来可能需要使用的其他配置。 处理网关子网时,请避免将网络安全组 (NSG) 关联到网关子网。 将网络安全组与此子网关联可能会导致 VPN 网关停止按预期方式工作。

    添加网关子网

  7. 选择网关“大小”。 大小为虚拟网关的网关 SKU。 在门户中,默认 SKU 为“基本”。 有关网关 SKU 的详细信息,请参阅关于 VPN 网关设置

    网关大小

  8. 选择网关的“路由类型”。 P2S 配置需要“动态”路由类型。 在此页中完成配置后,请单击“确定”。

    配置路由类型

  9. 在“新建 VPN 连接”页中,单击底部的“确定”开始创建虚拟网关。 VPN 网关可能需要长达 45 分钟的时间才能完成,具体取决于所选网关 SKU。

2.创建证书

Azure 使用证书对点到站点 VPN 的 VPN 客户端进行身份验证。 将根证书的公钥信息上传到 Azure, 然后即可将该公钥视为“受信任”公钥。 必须根据可信根证书生成客户端证书,并将其安装在每个客户端计算机的 Certificates-Current User/个人证书存储中。 当客户端启动到 VNet 的连接时,使用证书进行身份验证。

如果使用自签名证书,这些证书必须使用特定的参数创建。 可以按照 PowerShell 和 Windows 10MakeCert 的说明,创建自签名证书。 使用自签名根证书以及从自签名根证书生成客户端证书时,请务必按这些说明中的步骤操作。 否则,创建的证书将不兼容 P2S 连接,并且会出现收到连接错误。

第 1 部分:获取根证书的公钥 (.cer)

可以使用通过企业解决方案生成的根证书(推荐),也可以生成自签名证书。 创建根证书以后,请将公共证书数据(不是密钥)作为 Base-64 编码的 X.509 .cer 文件导出,然后将公共证书数据上传到 Azure。

  • 企业证书: 如果要使用企业级解决方案,可以使用现有的证书链。 获取要使用的根证书的 .cer 文件。
  • 自签名根证书:如果使用的不是企业证书解决方案,则需要创建自签名根证书。 必须遵循下面的 P2S 证书文章之一中的步骤。 否则,创建的证书将不兼容 P2S 连接,客户端在尝试连接时会收到连接错误。 可以使用 Azure PowerShell、MakeCert 或 OpenSSL。 所提供文章中的步骤可生成兼容证书:

    • Windows 10 PowerShell 指令:这些指令需要 Windows 10 和 PowerShell 才能生成证书。 从根证书生成的客户端证书可以安装在任何受支持的 P2S 客户端上。
    • MakeCert 指令:如果无权访问用于生成证书的 Windows 10 计算机,则可使用 MakeCert。 MakeCert 已弃用,但仍可使用 MakeCert 生成证书。 从根证书生成的客户端证书可以安装在任何受支持的 P2S 客户端上。
    • Linux 说明

第 2 部分:生成客户端证书

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

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

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

  • 企业证书:

    • 如果使用的是企业证书解决方案,请使用通用名称值格式“name@yourdomain.com”生成客户端证书,而不要使用“域名\用户名”格式。
    • 请确保客户端证书基于“用户”证书模板,该模板使用“客户端身份验证”(而不是“智能卡登录”等)作为使用列表中的第一项。可以通过双击客户端证书,并查看“详细信息”>“增强型密钥用法”来检查证书。
  • 自签名根证书:必须遵循下面的 P2S 证书文章之一中的步骤。 否则,创建的客户端证书将不兼容 P2S 连接,客户端在尝试连接时会收到错误。 下述文章之一中的步骤可以生成兼容的客户端证书:

    • Windows 10 PowerShell 指令:这些指令需要 Windows 10 和 PowerShell 才能生成证书。 生成的证书可以安装在任何受支持的 P2S 客户端上。
    • MakeCert 指令:如果无权访问用于生成证书的 Windows 10 计算机,则可使用 MakeCert。 MakeCert 已弃用,但仍可使用 MakeCert 生成证书。 生成的证书可以安装在任何受支持的 P2S 客户端上。
    • Linux 说明

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

3.上传根证书 .cer 文件

创建网关后,可以将受信任根证书的 .cer 文件(其中包含公钥信息)上传到 Azure。 不要将根证书的私钥上传到 Azure。 上传 .cer 文件后,Azure 可以使用该文件对已安装客户端证书(根据可信根证书生成)的客户端进行身份验证。 可在以后根据需要上传更多的受信任根证书文件(最多 20 个)。

  1. 在 VNet 页的“VPN 连接”部分,单击“客户端”图形打开“点到站点 VPN 连接”页。

    客户端

  2. 在“点到站点连接”页中,单击“管理证书”打开“证书”页。

    “证书”页

  3. 在“证书”页中,单击“上传”打开“上传证书”页。

    上传证书页

  4. 单击文件夹图形浏览 .cer 文件。 选择该文件,并单击“确定”。 刷新页面,在“证书”页中查看上传的证书。

    上传证书

4.配置客户端

若要通过点到站点 VPN 连接到 VNet,每个客户端都必须安装一个用于配置本机 Windows VPN 客户端的包。 配置包使用连接到虚拟网络所需的设置配置本机 Windows VPN 客户端。

只要版本与客户端的体系结构匹配,就可以在每台客户端计算机上使用相同的 VPN 客户端配置包。 有关支持的客户端操作系统列表,请参阅本文末尾的点到站点连接常见问题解答

第 1 部分 - 生成和安装 VPN 客户端配置包

  1. 在 Azure 门户的 VNet“概览”页的“VPN 连接”中,单击客户端图形打开“点到站点 VPN 连接”页。
  2. 在“点到站点 VPN 连接”页顶部,单击要在其中进行安装的客户端操作系统所对应的下载包:

    • 对于 64 位客户端,请选择“VPN 客户端(64 位)”。
    • 对于 32 位客户端,请选择“VPN 客户端(32 位)”。

    下载 VPN 客户端配置包

  3. 生成打包的内容以后,即可下载它并在客户端计算机上安装它。 如果显示 SmartScreen 弹出窗口,请依次单击“更多信息”、“仍要运行”。 也可将要安装的包保存在其他客户端计算机上。

第 2 部分:安装客户端证书

如果想要从另一台客户端计算机(而不是用于生成客户端证书的计算机)创建 P2S 连接,需要安装客户端证书。 安装客户端证书时,需要使用导出客户端证书时创建的密码。 通常只需双击证书即可安装。 有关详细信息,请参阅安装已导出的客户端证书

5.连接到 Azure

连接到 VNet

Note

在要从其进行连接的客户端计算机上,你必须拥有管理员权限。

  1. 若要连接到 VNet,请在客户端计算机上导航到 VPN 连接,找到创建的 VPN 连接。 其名称与虚拟网络的名称相同。 单击“连接” 。 可能会出现与使用证书相关的弹出消息。 如果出现此消息,请单击“继续” 以使用提升的权限。
  2. 在“连接”状态页上,单击“连接”以启动连接。 如果看到“选择证书”屏幕,请确保所显示的客户端证书是要用来连接的证书。 如果不是,请使用下拉箭头选择正确的证书,并单击“确定”。

    VPN 客户端连接

  3. 连接已建立。

    已建立连接

排查 P2S 连接问题

如果连接时遇到问题,请检查以下项:

  • 如果已导出客户端证书,请确保使用默认值“包括证书路径中的所有证书(如果可能)”将其作为 .pfx 文件导出。 使用此值将其导出时,也会导出根证书信息。 将证书安装到客户端计算机上时,包含在 .pfx 文件中的根证书也会安装到该客户端计算机上。 客户端计算机必须安装根证书信息。 若要进行检查,请转到“管理用户证书”,并导航到“受信任的根证书颁发机构\证书”。 验证根证书是否已列出。 若要进行身份验证,根证书必须存在。

  • 如果使用的是通过企业 CA 解决方案颁发的证书,并且无法进行身份验证,请检查客户端证书上的身份验证顺序。 可以通过双击客户端证书,并转到“详细信息”>“增强型密钥用法”来检查身份验证列表顺序。 请确保此列表显示的第一项是“客户端身份验证”。 如果不是,则需要基于将“客户端身份验证”作为列表中第一项的用户模板颁发客户端证书。

验证 VPN 连接

  1. 若要验证 VPN 连接是否处于活动状态,请在客户端计算机上打开提升的命令提示符,然后运行 ipconfig/all
  2. 查看结果。 请注意,收到的 IP 地址是点到站点连接地址范围中的一个地址,该范围是你在创建 VNet 时指定的。 结果应类似于以下示例:

      PPP adapter VNet1:
          Connection-specific DNS Suffix .:
          Description.....................: VNet1
          Physical Address................:
          DHCP Enabled....................: No
          Autoconfiguration Enabled.......: Yes
          IPv4 Address....................: 192.168.130.2(Preferred)
          Subnet Mask.....................: 255.255.255.255
          Default Gateway.................:
          NetBIOS over Tcpip..............: Enabled
    

连接到虚拟机

可以连接到已部署到 VNet 的 VM,方法是创建到 VM 的远程桌面连接。 若要通过初始验证来确认能否连接到 VM,最好的方式是使用其专用 IP 地址而不是计算机名称进行连接。 这种方式是测试能否进行连接,而不是测试名称解析是否已正确配置。

  1. 定位 VM 的专用 IP 地址。 查找 VM 的专用 IP 地址时,可以通过 Azure 门户或 PowerShell 查看 VM 的属性。
  2. 验证是否已使用点到站点 VPN 连接连接到 VNet。
  3. 打开远程桌面连接,方法是:在任务栏的搜索框中键入“RDP”或“远程桌面连接”,然后选择“远程桌面连接”。 也可在 PowerShell 中使用“mstsc”命令打开远程桌面连接。
  4. 在远程桌面连接中,输入 VM 的专用 IP 地址。 可以通过单击“显示选项”来调整其他设置,然后进行连接。

排查到 VM 的 RDP 连接的问题

如果无法通过 VPN 连接连接到虚拟机,可以查看一些项目。 如需更多故障排除信息,请参阅排查到 VM 的远程桌面连接问题

  • 验证 VPN 连接是否成功。
  • 验证是否已连接到 VM 的专用 IP 地址。
  • 使用“ipconfig”检查分配给以太网适配器的 IPv4 地址,该适配器所在的计算机正是要从其进行连接的计算机。 如果该 IP 地址位于你要连接到的 VNet 的地址范围内,或者位于 VPNClientAddressPool 的地址范围内,则称为地址空间重叠。 当地址空间以这种方式重叠时,网络流量不会抵达 Azure,而是呆在本地网络中。
  • 如果可以使用专用 IP 地址连接到 VM,但不能使用计算机名称进行连接,则请验证是否已正确配置 DNS。 若要详细了解如何对 VM 进行名称解析,请参阅针对 VM 的名称解析
  • 验证是否在为 VNet 指定 DNS 服务器 IP 地址之后,才生成 VPN 客户端配置包。 如果更新了 DNS 服务器 IP 地址,请生成并安装新的 VPN 客户端配置包。

添加或删除受信任的根证书

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

添加受信任的根证书

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

删除受信任的根证书

  1. 在 VNet 页的“VPN 连接”部分,单击“客户端”图形打开“点到站点 VPN 连接”页。

    客户端

  2. 在“点到站点连接”页中,单击“管理证书”打开“证书”页。

    “证书”页

  3. 在“证书”页中,单击要删除的证书旁边的省略号,然后单击“删除”。

    删除根证书

吊销客户端证书

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

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

吊销客户端证书

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

  1. 检索客户端证书指纹。 有关详细信息,请参阅如何:检索证书的指纹
  2. 将信息复制到一个文本编辑器,删除所有空格,使之成为一个连续的字符串。
  3. 导航到“‘经典虚拟网络名称’> 点到站点 VPN 连接 > 证书”页,然后单击“吊销列表”打开“吊销列表”页。
  4. 在“吊销列表”页中,单击“+添加证书”打开“将证书添加到吊销列表”页。
  5. 在“将证书添加到吊销列表”页中,将证书指纹以连续文本行的形式进行粘贴,不留空格。 单击页面底部的“确定”。
  6. 更新完成后,不再可以使用证书来连接。 客户端在尝试使用此证书进行连接时,会收到一条消息,指出证书不再有效。

点到站点常见问题解答

此常见问题解答适用于使用经典部署模型进行的 P2S 连接。

点到站点连接允许使用哪些客户端操作系统?

支持以下客户端操作系统:

  • Windows 7(32 位和 64 位)
  • Windows Server 2008 R2(仅 64 位)
  • Windows 8(32 位和 64 位)
  • Windows 8.1(32 位和 64 位)
  • Windows Server 2012(仅 64 位)
  • Windows Server 2012 R2(仅 64 位)
  • Windows 10

是否可以使用任何支持 SSTP 的点到站点软件 VPN 客户端?

否。 仅支持上面列出的 Windows 操作系统版本。

在我的点到站点配置中,可以有多少 VPN 客户端终结点?

我们最多支持 128 个 VPN 客户端可同时连接到一个虚拟网络。

是否可以将我自己的内部 PKI 根 CA 用于点到站点连接?

是的。 以前只可使用自签名根证书。 仍可上传 20 个根证书。

是否可以使用点到站点功能穿越代理和防火墙?

是。 我们使用 SSTP(安全套接字隧道协议)作为隧道穿越防火墙。 此隧道显示为 HTTPS 连接。

如果重新启动进行过点到站点配置的客户端计算机,是否会自动重新连接 VPN?

默认情况下,客户端计算机不自动重新建立 VPN 连接。

点到站点在 VPN 客户端上是否支持自动重新连接和 DDNS?

点到站点 VPN 中当前不支持自动重新连接和 DDNS。

对于同一虚拟网络,站点到站点和点到站点配置能否共存?

是的。 如果为网关使用 RouteBased VPN 类型,这两种解决方案都可行。 对于经典部署模型,需要一个动态网关。 我们不支持对静态路由 VPN 网关或使用 -VpnType PolicyBased cmdlet 的网关使用点到站点连接。

是否可以将点到站点客户端配置为同时连接到多个虚拟网络?

是,可以这样做。 但虚拟网络的 IP 前缀不得重叠,并且点到站点地址空间在虚拟网络之间不得重叠。

预计通过站点到站点连接或点到站点连接的吞吐量有多少?

很难维持 VPN 隧道的准确吞吐量。 IPsec 和 SSTP 是重重加密的 VPN 协议。 本地网络与 Internet 之间的延迟和带宽也限制了吞吐量。

后续步骤

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

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