为 P2S 证书身份验证连接配置 OpenVPN 客户端 - Linux

本文可帮助你在 Linux 中通过 OpenVPN 客户端使用 VPN 网关点到站点 (P2S) 和证书身份验证连接到 Azure 虚拟网络 (VNet)

开始之前

请确认你阅读的是正确的文章。 下表显示了 Azure VPN 网关 P2S VPN 客户端可用的配置文章。 步骤因身份验证类型、隧道类型和客户端 OS 而有所不同。

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

先决条件

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

连接要求

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

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

Workflow

本文的工作流如下:

  1. 安装 OpenVPN 客户端。
  2. 查看生成的 VPN 客户端配置文件包中包含的 VPN 客户端配置文件。
  3. 配置 OpenVPN 客户端。
  4. 连接到 Azure。

关于证书

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

本文中的 OpenVPN 客户端使用以 .pfx 格式导出的证书。 可以使用 Windows 指令轻松地将客户端证书导出为这种格式。 请参阅导出客户端证书 - pfx。 如果没有 Windows 计算机,作为解决方法,可以使用小型 Windows VM 将证书导出为所需的 .pfx 格式。 目前,我们提供的 OpenSSL Linux 指令只能生成 .pem 格式

配置步骤

本部分将帮助你为使用 OpenVPN 隧道类型的证书身份验证配置 Linux 客户端。 若要连接到 Azure,请下载 OpenVPN 客户端并配置连接配置文件。

注意

尚不支持 OpenVPN 客户端版本 2.6。

  1. 打开新的终端会话。 可以同时按“Ctrl + Alt + T”打开新会话。

  2. 输入以下命令以安装所需的组件:

    sudo apt-get install openvpn
    sudo apt-get -y install network-manager-openvpn
    sudo service network-manager restart
    
  3. 接下来,转到 VPN 客户端配置文件文件夹并解压缩以查看这些文件。

  4. 导出创建的 P2S 客户端证书,并将其上传到网关上的 P2S 配置。 有关步骤,请参阅 VPN 网关点到站点

  5. 从 .pfx 中提取私钥和 base64 指纹。 有多种方法可实现此操作。 其中一种方法是在计算机上使用 OpenSSL。

    openssl pkcs12 -in "filename.pfx" -nodes -out "profileinfo.txt"
    

    profileinfo.txt 文件包含 CA 的私钥与指纹以及客户端证书。 请务必使用客户端证书的指纹。

  6. 在文本编辑器中打开 profileinfo.txt。 若要获取客户端(子)证书的指纹,请选择并复制子证书的“-----BEGIN CERTIFICATE-----”与“-----END CERTIFICATE-----”之间的文本(包括这两行)。 查看 subject=/ 行可以识别子证书。

  7. 打开 vpnconfig.ovpn 文件并找到以下示例中的部分。 替换“cert”与“/cert”之间的所有内容。

    # P2S client certificate
    # please fill this field with a PEM formatted cert
    <cert>
    $CLIENTCERTIFICATE
    </cert>
    
  8. 在文本编辑器中打开 profileinfo.txt。 若要获取私钥,请选择并复制“-----BEGIN PRIVATE KEY-----”与“-----END PRIVATE KEY-----”之间的文本(包括这两行)。

  9. 在文本编辑器中打开 vpnconfig.ovpn 文件,并找到此节。 粘贴私钥,替换“key”与“/key”之间的所有内容。

    # P2S client root certificate private key
    # please fill this field with a PEM formatted key
    <key>
    $PRIVATEKEY
    </key>
    
  10. 请勿更改任何其他字段。 使用客户端输入中的已填充的配置连接到 VPN。

    • 若要使用命令行进行连接,请键入以下命令:

      sudo openvpn --config <name and path of your VPN profile file>&
      
    • 若要使用命令行断开连接,请键入以下命令:

      sudo pkill openvpn
      
    • 要使用 GUI 进行连接,请转到系统设置。

  11. 选择 + 添加新的 VPN 连接。

  12. 在“添加 VPN”下,选择“从文件导入…”。

  13. 浏览到配置文件,然后双击或选择“打开”。

  14. 选择“添加 VPN”窗口上的“添加”。

    屏幕截图显示了“添加 VPN”页上的“从文件导入”。

  15. 可以通过在“网络设置”页面上或在系统托盘中的网络图标下打开 VPN 进行连接

后续步骤

有关其他步骤,请返回到 P2S Azure 门户一文。