Compartir a través de

配置 OpenVPN 2.x 客户端以实现 P2S 证书身份验证连接 - Windows

如果将点到站点 (P2S) VPN 网关配置为使用 OpenVPN 和证书身份验证,则可以使用 OpenVPN 客户端连接到虚拟网络。 本文将逐步讲解如何配置 OpenVPN 客户端 2.4 及更高版本 并连接到虚拟网络。

开始之前

在开始客户端配置步骤之前,请验证是否正在阅读正确的 VPN 客户端配置文章。 下表提供了 VPN 网关点到站点 VPN 客户端可用的配置文章。 步骤因身份验证类型、隧道类型和客户端 OS 而有所不同。

身份验证 隧道类型 客户端 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 客户端

注意

OpenVPN 客户端是独立管理的,不受 Microsoft 的控制。 这意味着 Microsoft 不会监督其代码、内部版本、路线图或法律方面。 如果客户遇到 OpenVPN 客户端的任何 bug 或问题,应直接与 OpenVPN Inc. 支持部门联系。 本文中的准则“按原样”提供,未经由 OpenVPN Inc. 验证。这些准则要辅助的目标客户已经熟悉该客户端并且希望使用该客户端连接到点到站点 VPN 设置中的 Azure VPN 网关。

先决条件

本文假定你已执行以下先决条件:

连接要求

若要使用证书身份验证通过 OpenVPN 客户端连接到 Azure,每个连接客户端计算机都需要以下项:

  • 必须在每台客户端计算机上安装和配置 OpenVPN 客户端软件。
  • 客户端计算机必须有本地安装的客户端证书。

Workflow

本文的工作流如下:

  1. 生成并安装客户端证书(如果尚未这样做)。
  2. 查看生成的 VPN 客户端配置文件包中包含的 VPN 客户端配置文件。
  3. 配置 OpenVPN 客户端。
  4. 连接到 Azure。

生成并安装客户端证书

对于证书身份验证,必须在每台客户端计算机上安装客户端证书。 要使用的客户端证书必须使用私钥导出,并且必须包含证书路径中的所有证书。 此外,对于某些配置,还需要安装根证书信息。

在许多情况下,可以通过双击直接在客户端计算机上安装客户端证书。 但是,对于某些 OpenVPN 客户端配置,可能需要从客户端证书中提取信息才能完成配置。

  • 有关使用证书的信息,请参阅点到站点:生成证书
  • 要查看已安装的客户端证书,请打开“管理用户证书”。 客户端证书安装在“Current User\Personal\Certificates”中。

安装客户端证书

每个计算机需要一个客户端证书才能执行身份验证。 如果本地计算机上尚未安装客户端证书,可以使用以下步骤安装该证书:

  1. 找到客户端证书。 有关客户端证书的详细信息,请参阅安装客户端证书
  2. 安装客户端证书。 通常,可以通过双击证书文件并提供密码(如果需要)来执行此操作。

查看配置文件

VPN 客户端配置文件配置包包含特定文件夹。 文件夹中的文件包含在客户端计算机上配置 VPN 客户端配置文件所需的设置。 它们包含的文件和设置特定于 VPN 网关,以及你的 VPN 网关配置为使用的身份验证和隧道的类型。

找到并解压缩生成的 VPN 客户端配置文件配置包。 对于证书身份验证和 OpenVPN,应会看到 OpenVPN 文件夹。 如果未看到该文件夹,请验证以下项:

  • 验证 VPN 网关是否已配置为使用 OpenVPN 隧道类型。
  • 如果使用 Microsoft Entra 身份验证,则可能没有 OpenVPN 文件夹。 请参阅 Microsoft Entra ID 配置文章。

配置客户端

  1. 从官方 OpenVPN 网站下载并安装 OpenVPN 客户端(版本 2.4 或更高版本)。

  2. 找到生成并下载到计算机的 VPN 客户端配置文件配置包。 解压缩该包。 转到 OpenVPN 文件夹,使用记事本打开 vpnconfig.ovpn 配置文件。

  3. 接下来,找到创建的子证书。 如果没有该证书,请使用以下链接之一来执行导出证书的步骤。 在下一部分需要用到该证书信息。

  4. 在子证书中,从 .pfx 中提取私钥和 base64 指纹。 有多种方法可实现此操作。 其中一种方法是在计算机上使用 OpenSSL。 profileinfo.txt 文件包含 CA 和客户端证书的私钥与指纹。 请务必使用客户端证书的指纹。

    openssl pkcs12 -in "filename.pfx" -nodes -out "profileinfo.txt"
    
  5. 切换到在记事本中打开的 vpnconfig.ovpn 文件。 填充 <cert></cert> 之间的部分,并获取 $CLIENT_CERTIFICATE$INTERMEDIATE_CERTIFICATE$ROOT_CERTIFICATE 的值,如以下示例所示。

       # P2S client certificate
       # please fill this field with a PEM formatted cert
       <cert>
       $CLIENT_CERTIFICATE
       $INTERMEDIATE_CERTIFICATE (optional)
       $ROOT_CERTIFICATE
       </cert>
    
    • 在记事本中打开上一步骤的 profileinfo.txt。 可通过查看 subject= 行来识别每个证书。 例如,如果子证书称为 P2SChildCert,则客户端证书将位于 subject=CN = P2SChildCert 属性之后。
    • 对于链中的每个证书,复制文本“-----BEGIN CERTIFICATE-----”与“-----END CERTIFICATE-----”之间的文本(包括这两行)。
    • 只有在 profileinfo.txt 文件中具有中间证书时,才包括 $INTERMEDIATE_CERTIFICATE 值。
  6. 在记事本中打开 profileinfo.txt。 若要获取私钥,请选择并复制“-----BEGIN PRIVATE KEY-----”与“-----END PRIVATE KEY-----”之间的文本(包括这两行)。

  7. 返回到记事本中的 vpnconfig.ovpn 文件,并找到此节。 粘贴私钥,替换 <key></key> 之间的所有内容。

    # P2S client root certificate private key
    # please fill this field with a PEM formatted key
    <key>
    $PRIVATEKEY
    </key>
    
  8. 如果使用的是 2.6 版本的 OpenVPN 客户端,请将“disable-dco”选项添加到配置文件。 此选项似乎无法向后兼容以前的版本,因此它应仅添加到 OpenVPN 客户端版本 2.6 中。

  9. 请勿更改任何其他字段。 使用客户端输入中的已填充的配置连接到 VPN。

  10. 将 vpnconfig.ovpn 文件复制到 C:\Program Files\OpenVPN\config 文件夹。

  11. 右键单击系统托盘中的 OpenVPN 图标,然后单击“连接”。

后续步骤

继续进行任何其他服务器或连接设置。 请参阅点到站点配置步骤