配置 Azure VPN 客户端 - 证书身份验证 OpenVPN - Linux(预览版)

本文可帮助你在 Azure VPN 客户端中通过 VPN 网关点到站点 (P2S) 证书身份验证连接到 Azure 虚拟网络 (VNet)。 适用于 Linux 的 Azure VPN 客户端需要 OpenVPN 隧道类型。

尽管适用于 Linux 的 Azure VPN 客户端可能在其他 Linux 发行版和版本上运行,但适用于 Linux 的 Azure VPN 客户端仅支持以下版本:

  • Ubuntu 20.04
  • Ubuntu 22.04

开始之前

请确认你阅读的是正确的文章。 下表显示了 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 客户端

先决条件

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

连接要求

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

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

Workflow

基本工作流如下:

  1. 生成并安装客户端证书。
  2. 找到在为 P2S VPN 网关连接配置服务器设置 - 证书身份验证一文中生成的 VPN 客户端配置文件配置包。
  3. 下载并配置适用于 Linux 的 Azure VPN 客户端。
  4. 连接到 Azure。

生成证书

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

使用以下命令以 .pem 格式生成客户端公共证书数据和私钥。 若要运行这些命令,需要具有公共根证书 caCert.pem 以及根证书 caKey.pem 的私钥。 有关详细信息,请参阅生成和导出证书 - Linux - OpenSSL

export PASSWORD="password"
export USERNAME=$(hostnamectl --static)
 
# Generate a private key
openssl genrsa -out "${USERNAME}Key.pem" 2048 
 
# Generate a CSR
openssl req -new -key "${USERNAME}Key.pem" -out "${USERNAME}Req.pem" -subj "/CN=${USERNAME}" 
 
# Sign the CSR using the CA certificate and key
openssl x509 -req -days 365 -in "${USERNAME}Req.pem" -CA caCert.pem -CAkey caKey.pem -CAcreateserial -out "${USERNAME}Cert.pem" -extfile <(echo -e "subjectAltName=DNS:${USERNAME}\nextendedKeyUsage=clientAuth")

查看 VPN 客户端配置文件

生成 VPN 客户端配置文件配置包时,VPN 客户端的所有必需配置设置都包含在 VPN 客户端 zip 配置文件中。 每个虚拟网络的 P2S VPN 网关配置都有自己的 VPN 客户端配置文件。 如果生成文件后 P2S VPN 配置有任何更改,例如 VPN 协议类型或身份验证类型出现更改,则需要生成新的 VPN 客户端配置文件,并将新配置应用到所有要连接的 VPN 客户端。

找到并解压缩生成的 VPN 客户端配置文件配置包(已在先决条件中列出)。 对于 P2S 证书身份验证和 OpenVPN 隧道类型,你将看到 AzureVPN 文件夹。 在 AzureVPN 文件夹中,找到 azurevpnconfig.xml 文件。 此文件包含用于配置 VPN 客户端配置文件的设置。

如果未看到 azurevpnconfig.xml 文件,请验证以下项:

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

下载 Azure VPN 客户端

添加 Microsoft 存储库列表,并使用以下命令安装适用于 Linux 的 Azure VPN 客户端:

# install curl utility
sudo apt-get install curl

# Install Microsoft's public key
curl -sSl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc

# Install the production repo list for focal
# For Ubuntu 20.04
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft-ubuntu-focal-prod.list

# Install the production repo list for jammy
# For Ubuntu 22.04
curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft-ubuntu-jammy-prod.list

sudo apt-get update

sudo apt-get install microsoft-azurevpnclient

有关存储库的详细信息,请参阅适用于 Microsoft 产品的 Linux 软件存储库

配置 Azure VPN 客户端配置文件

  1. 打开 Azure VPN 客户端。

  2. 在 Linux VPN 客户端页面左下角,选择“导入”。

    适用于 Linux 的 Azure VPN 客户端导入操作的屏幕截图。

  3. 在窗口中,导航到 azurevpnconfig.xml 文件,将其选中,然后选择“打开”

  4. 若要添加“客户端证书公共数据”,请使用文件选取器并找到相关的 .pem 文件。

    适用于 Linux 的 Azure VPN 客户端的已选中客户端证书数据的屏幕截图。

  5. 若要添加“客户端证书私钥”,请使用选取器,并在私钥的文本框中选择证书文件路径,私钥文件的扩展名为 .pem

  6. 导入验证后(导入时没有错误),选择“保存”

  7. 在左窗格中,找到创建的 VPN 连接配置文件。 选择“连接” 。

    适用于 Linux 的 Azure VPN 客户端连接操作的屏幕截图。

  8. 成功连接客户端后,状态显示为“已连接”并带绿色图标。

    适用于 Linux 的 Azure VPN 客户端的客户端“已连接”状态的屏幕截图。

  9. 可以在 VPN 客户端主屏幕的状态日志中查看连接日志摘要。

    适用于 Linux 的 Azure VPN 客户端的客户端状态日志的屏幕截图。

卸载 Azure VPN 客户端

如果要卸载 Azure VPN 客户端,请使用终端中的以下命令:

sudo apt remove microsoft-azurevpnclient

后续步骤

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