生成并安装用于 P2S 证书身份验证的 VPN 客户端配置文件

使用点到站点和证书身份验证连接到 Azure VNet 时,你使用操作系统上原生安装的用来进行连接的 VPN 客户端。 VPN 客户端的所有必需配置设置都包含在 VPN 客户端 zip 配置文件中。 zip 文件中的设置可帮助你轻松地为 Windows、Mac IKEv2 VPN 或 Linux 配置 VPN 客户端。

你生成的 VPN 客户端配置文件特定于虚拟网络的 P2S VPN 网关配置。 如果在生成文件后对点到站点 VPN 配置进行了任何更改(例如,更改了 VPN 协议类型或身份验证类型),则需生成新的 VPN 客户端配置文件并将新配置应用于要连接的所有 VPN 客户端。

重要

从 2018 年 7 月 1 日开始,Azure VPN 网关将不再支持 TLS 1.0 和 1.1。 VPN 网关将仅支持 TLS 1.2。 仅点到站点连接会受到影响;站点到站点连接不受影响。 如果在 Windows 10 客户端上点到站点 VPN 使用的是 TLS,则无需进行任何操作。 如果在 Windows 7 和 Windows 8 客户端上使用 TLS 建立点到站点连接,请参阅 VPN 网关常见问题解答,了解更新说明。

生成 VPN 客户端配置文件

可使用 PowerShell 或使用 Azure 门户生成客户端配置文件。 两种方法之一都会返回相同的 zip 文件。 解压缩该文件,查看以下文件夹:

  • WindowsAmd64WindowsX86:分别包含 Windows 32 位和 64 位安装程序包。 WindowsAmd64 安装程序包适用于所有受支持的 64 位 Windows 客户端,而不仅仅是 Amd。
  • Generic:包含用于创建自己的 VPN 客户端配置的常规信息。 如果网关上配置了 IKEv2 或 SSTP+IKEv2,会提供 Generic 文件夹。 如果仅配置了 SSTP,则不会提供 Generic 文件夹。

使用 Azure 门户生成文件

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

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

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

    下载 VPN 客户端配置包。

  4. 生成配置包后,浏览器会指出有一个客户端 zip 配置文件可用。 其名称与网关名称相同。 解压缩该文件,查看文件夹。

使用 PowerShell 生成文件

  1. 生成 VPN 客户端配置文件时,“-AuthenticationMethod”的值为“EapTls”。 使用以下命令生成 VPN 客户端配置文件:

    $profile=New-AzVpnClientConfiguration -ResourceGroupName "TestRG" -Name "VNet1GW" -AuthenticationMethod "EapTls"
    
    $profile.VPNProfileSASUrl
    
  2. 将 URL 复制到浏览器,下载 zip 文件,然后解压缩该文件,查看其中的文件夹。

Windows

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

备注

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

请使用以下步骤配置用于证书身份验证的本机 Windows VPN 客户端:

  1. 根据 Windows 计算机的体系结构选择 VPN 客户端配置文件。 对于 64 位处理器体系结构,请选择“VpnClientSetupAmd64”安装程序包。 对于 32 位处理器体系结构,请选择“VpnClientSetupX86”安装程序包。
  2. 双击所需的包进行安装。 如果显示 SmartScreen 弹出窗口,请依次单击“更多信息”、“仍要运行”。
  3. 在客户端计算机上,导航到“网络设置”,并单击“VPN”。 VPN 连接显示所连接到的虚拟网络的名称。
  4. 尝试连接前,请验证客户端计算机上是否已安装客户端证书。 使用本机 Azure 证书身份验证类型时,客户端证书是身份验证必需的。

Mac (macOS)

必须在将连接到 Azure 的每个 Mac 上手动配置本机 IKEv2 VPN 客户端。 Azure 不提供用于本机 Azure 证书身份验证的 mobileconfig 文件。 Generic 文件夹包含需要用于配置的所有信息。 如果在下载中没有看到 Generic 文件夹,则可能 IKEv2 未选作隧道类型。 请注意,VPN 网关基本 SKU 不支持 IKEv2。 选择 IKEv2 后,再次生成 zip 文件,检索 Generic 文件夹。
Generic 文件夹包含以下文件:

  • VpnSettings.xml:包含服务器地址和隧道类型等重要设置。
  • VpnServerRoot.cer:包含在 P2S 连接设置过程中验证 Azure VPN 网关所需的根证书。

使用以下步骤在 Mac 中配置用于证书身份验证的本机 VPN 客户端。 必须在将连接到 Azure 的每个 Mac 上完成以下步骤:

  1. VpnServerRoot 根证书导入 Mac。 为此,可将该文件复制到 Mac,并双击它。 选择“添加”进行导入。

    屏幕截图显示“证书”页

    备注

    双击证书可能不会显示“添加”对话框,但该证书将安装在相应的存储中。 可以在证书类别下的登录密钥链中查找该证书。

  2. 验证已安装由根证书颁发的客户端证书,该根证书在配置 P2S 设置时已上传到 Azure。 这不同于上一步中安装的 VPNServerRoot。 客户端证书可用于身份验证,且是必需的。 有关生成证书的详细信息,请参阅生成证书。 有关如何安装客户端证书的信息,请参阅安装客户端证书

  3. 在“网络首选项”下打开“网络”对话框,然后选择“+”为与 Azure 虚拟网络的 P2S 连接新建 VPN 客户端连接配置文件 。

    “接口”值为“VPN”,“VPN 类型”值为“IKEv2”。 在“服务名称”字段中为配置文件指定一个名称,然后选择“创建”以创建 VPN 客户端连接配置文件 。

    屏幕截图显示“网络”窗口,其中包括用于选择接口、选择 VPN 类型和输入服务名称的选项

  4. Generic 文件夹中的 VpnSettings.xml 文件复制 VpnServer 标记值。 将该值粘贴到配置文件的“服务器地址”和“远程 ID”字段中。

    屏幕截图显示服务器信息。

  5. 选择“身份验证设置”,然后选择“证书” 。 对于 Catalina,请选择“无”,然后选择“证书” 。

    屏幕截图显示身份验证设置。

    对于 Catalina,请选择“无”,然后选择“证书”。 选择 正确的证书:

    屏幕截图显示“网络”窗口,其中“身份验证设置”选择了“无”并选择了“证书”。

  6. 单击“选择…” 选择要用于身份验证的客户端证书。 这是你在步骤 2 中安装的证书。

    屏幕截图显示具有“身份验证设置”的“网络”窗口,你可在其中选择证书。

  7. “选择标识”会显示可供选择的证书列表。 选择适当的证书,然后选择“继续”。

    屏幕截图显示可在其中选择正确证书的“选择标识”对话框。

  8. 在“本地 ID”字段中,指定证书的名称(见步骤 6)。 在此示例中,它是 ikev2Client.com。 然后,选择“应用”保存更改。

    屏幕截图显示“应用”。

  9. 在“网络”对话框中,选择“应用”以保存所有更改 。 然后,选择“连接”以启动到 Azure 虚拟网络的 P2S 连接。

Linux (strongSwan GUI)

安装 strongSwan

以下配置用于执行下面的步骤:

  • 计算机:Ubuntu Server 18.04
  • 依赖项:strongSwan

使用以下命令安装所需的 strongSwan 配置:

sudo apt install strongswan
sudo apt install strongswan-pki
sudo apt install libstrongswan-extra-plugins

使用以下命令安装 Azure 命令行接口:

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

有关如何安装 Azure CLI 的其他说明

生成证书

如果尚未生成证书,请执行以下步骤:

生成 CA 证书。

ipsec pki --gen --outform pem > caKey.pem
ipsec pki --self --in caKey.pem --dn "CN=VPN CA" --ca --outform pem > caCert.pem

打印 base64 格式的 CA 证书。 这是 Azure 支持的格式。 按照 P2S 配置步骤,将此证书上传到 Azure。

openssl x509 -in caCert.pem -outform der | base64 -w0 ; echo

生成用户证书。

export PASSWORD="password"
export USERNAME="client"

ipsec pki --gen --outform pem > "${USERNAME}Key.pem"
ipsec pki --pub --in "${USERNAME}Key.pem" | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "CN=${USERNAME}" --san "${USERNAME}" --flag clientAuth --outform pem > "${USERNAME}Cert.pem"

生成包含用户证书的 p12 捆绑包。 在后续步骤中使用客户端配置文件时将使用此捆绑包。

openssl pkcs12 -in "${USERNAME}Cert.pem" -inkey "${USERNAME}Key.pem" -certfile caCert.pem -export -out "${USERNAME}.p12" -password "pass:${PASSWORD}"

安装和配置

以下说明是在 Ubuntu 18.0.4 上创建的。 Ubuntu 16.0.10 不支持 strongSwan GUI。 如果想要使用 Ubuntu 16.0.10,则必须使用命令行。 以下示例可能与你看到的屏幕不同,具体取决于所用的 Linux 和 strongSwan 版本。

  1. 打开 终端 并运行示例中的命令,安装 strongSwan 及其网络管理器。

    sudo apt install network-manager-strongswan
    
  2. 选择“设置”,然后选择“网络”。 选择 + 按钮创建新连接。

    屏幕截图显示“网络连接”页。

  3. 从菜单中选择“IPsec/IKEv2 (strongSwan)”,然后双击。

    屏幕截图显示“添加 VPN”页。

  4. 在“添加 VPN”页上,添加 VPN 连接的名称。

    屏幕截图显示“选择连接类型”。

  5. 打开下载的客户端配置文件包含的 Generic 文件夹中的 VpnSettings.xml 文件。 找到名为 VpnServer 的标记,并复制以“azuregateway”开头、以“.chinacloudapp.cn”结尾的名称。

    屏幕截图显示复制数据。

  6. 在“网关”部分中,将此名称粘贴到新 VPN 连接的“地址”字段中 。 接下来,选择“证书”字段末尾的文件夹图标,浏览到 Generic 文件夹,并选择 VpnServerRoot 文件。

  7. 在连接的“客户端”部分,为“身份验证”选择“证书/私钥”。 对于“证书”和“私钥”,请选择前面创建的证书和私钥。 在“选项”中,选择“请求内部 IP 地址”。 然后选择“添加”。

    屏幕截图显示请求内部 IP 地址。

  8. 打开 连接。

    屏幕截图显示复制。

Linux (strongSwan CLI)

安装 strongSwan

以下配置用于执行下面的步骤:

  • 计算机:Ubuntu Server 18.04
  • 依赖项:strongSwan

使用以下命令安装所需的 strongSwan 配置:

sudo apt install strongswan
sudo apt install strongswan-pki
sudo apt install libstrongswan-extra-plugins

使用以下命令安装 Azure 命令行接口:

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

有关如何安装 Azure CLI 的其他说明

生成证书

如果尚未生成证书,请执行以下步骤:

生成 CA 证书。

ipsec pki --gen --outform pem > caKey.pem
ipsec pki --self --in caKey.pem --dn "CN=VPN CA" --ca --outform pem > caCert.pem

打印 base64 格式的 CA 证书。 这是 Azure 支持的格式。 按照 P2S 配置步骤,将此证书上传到 Azure。

openssl x509 -in caCert.pem -outform der | base64 -w0 ; echo

生成用户证书。

export PASSWORD="password"
export USERNAME="client"

ipsec pki --gen --outform pem > "${USERNAME}Key.pem"
ipsec pki --pub --in "${USERNAME}Key.pem" | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "CN=${USERNAME}" --san "${USERNAME}" --flag clientAuth --outform pem > "${USERNAME}Cert.pem"

生成包含用户证书的 p12 捆绑包。 在后续步骤中使用客户端配置文件时将使用此捆绑包。

openssl pkcs12 -in "${USERNAME}Cert.pem" -inkey "${USERNAME}Key.pem" -certfile caCert.pem -export -out "${USERNAME}.p12" -password "pass:${PASSWORD}"

安装和配置

  1. 从 Azure 门户下载 VPNClient 程序包。

  2. 将该文件解压缩。

  3. 从 Generic 文件夹中,将 VpnServerRoot.cer 复制或移动到 /etc/ipsec.d/cacerts 。

  4. 将 cp client.p12 复制或移动到 /etc/ipsec.d/private/ 。 此文件是 VPN 网关的客户端证书。

  5. 打开 VpnSettings.xml 文件并复制 <VpnServer> 值。 下一步骤中将使用此值。

  6. 调整以下示例中的值,然后将该示例添加到 /etc/ipsec.conf 配置。

    conn azure
          keyexchange=ikev2
          type=tunnel
          leftfirewall=yes
          left=%any
          leftauth=eap-tls
          leftid=%client # use the DNS alternative name prefixed with the %
          right= Enter the VPN Server value here# Azure VPN gateway address
          rightid=% # Enter the VPN Server value here# Azure VPN gateway FQDN with %
          rightsubnet=0.0.0.0/0
          leftsourceip=%config
          auto=add
    
  7. 将以下值添加到 /etc/ipsec.secrets。

    : P12 client.p12 'password' # key filename inside /etc/ipsec.d/private directory
    
  8. 运行以下命令:

    # ipsec restart
    # ipsec up azure
    

后续步骤

返回到你之前处理的原始文章,然后完成 P2S 配置。