配置服务器设置以进行 P2S VPN 网关证书身份验证 - PowerShell

本文介绍如何使用 Azure PowerShell 配置点到站点 (P2S) VPN,以将运行 Windows、Linux 或 macOS 的单个客户端连接到 Azure 虚拟网络 (VNet)。 本文包含基本的 PowerShell 配置步骤。 有关创建此类 P2S VPN 的更多详细信息,请参阅 Azure 门户文章使用 Azure 门户配置点到站点 VPN

若要从远程位置连接到 VNet,例如远程居家办公或参加远程会议时,可以使用 P2S VPN 连接。 如果只有一些客户端需要连接到 VNet,也可使用 P2S VPN 来代替站点到站点 VPN。 P2S 连接不需要 VPN 设备或面向公众的 IP 地址。 P2S 基于 SSTP(安全套接字隧道协议)或 IKEv2 创建 VPN 连接。

点到站点连接的示意图显示如何从计算机连接到 Azure VNet。

有关 P2S VPN 的详细信息,请参阅关于 P2S VPN

P2S Azure 证书身份验证连接使用以下项:

  • 基于路由的 VPN 网关(并非基于策略)。 有关 VPN 类型的详细信息,请参阅 VPN 网关设置
  • 适用于根证书的公钥(.cer 文件),已上传到 Azure。 上传证书后,该证书将被视为受信任的证书,用于身份验证。
  • 从根证书生成的客户端证书。 安装在要连接到 VNet 的每个客户端计算机上的客户端证书。 此证书用于客户端身份验证。
  • VPN 客户端配置文件。 使用 VPN 客户端配置文件配置 VPN 客户端。 这些文件包含客户端连接到 VNet 时所需的信息。 必须使用配置文件中的设置对进行连接的每个客户端进行配置。

先决条件

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

Azure PowerShell

可以在计算机本地安装并运行 Azure PowerShell cmdlet。 PowerShell cmdlet 经常更新。 如果尚未安装最新版本,说明中指定的值可能会失败。 若要查找计算机上安装的 Azure PowerShell 版本,请使用 Get-Module -ListAvailable Az cmdlet。 若要进行安装或更新,请参阅安装 Azure PowerShell 模块

登录

使用提升的权限打开 PowerShell 控制台,并连接到 Azure 帐户。 Connect-AzAccount -Environment AzureChinaCloud cmdlet 将提示你输入凭据。 进行身份验证后,它会下载帐户设置,以便 Azure PowerShell 可以使用这些设置。 可以使用 Get-AzSubscriptionSelect-AzSubscription -SubscriptionName "Name of subscription" 更改订阅。

创建 VNet

  1. 使用 New-AzResourceGroup 创建资源组。

    New-AzResourceGroup -Name "TestRG1" -Location "ChinaEast2"
    
  2. 使用 New-AzVirtualNetwork 创建虚拟网络。

    $vnet = New-AzVirtualNetwork `
    -ResourceGroupName "TestRG1" `
    -Location "ChinaEast2" `
    -Name "VNet1" `
    -AddressPrefix 10.1.0.0/16
    
  3. 使用 New-AzVirtualNetworkSubnetConfig 创建具有以下名称的子网:FrontEnd 和 GatewaySubnet(网关子网必须命名为“GatewaySubnet”)。

    $subnetConfigFrontend = Add-AzVirtualNetworkSubnetConfig `
      -Name Frontend `
      -AddressPrefix 10.1.0.0/24 `
      -VirtualNetwork $vnet
    
    $subnetConfigGW = Add-AzVirtualNetworkSubnetConfig `
      -Name GatewaySubnet `
      -AddressPrefix 10.1.255.0/27 `
      -VirtualNetwork $vnet
    
  4. 使用 Set-AzVirtualNetwork 将子网配置写入虚拟网络,以便在虚拟网络中创建子网:

    $vnet | Set-AzVirtualNetwork
    

创建 VPN 网关

请求公共 IP 地址

VPN 网关必须具有公共 IP 地址。 请先请求 IP 地址资源,并在创建虚拟网关时参阅该资源。 创建 VPN 网关时,IP 地址将静态分配给资源。 公共 IP 地址只在删除或重新创建网关时更改。 该地址不会因为 VPN 网关大小调整、重置或其他内部维护/升级而更改。

  1. 使用 New-AzPublicIpAddress 请求 VPN 网关的公共 IP 地址。

    $gwpip = New-AzPublicIpAddress -Name "GatewayIP" -ResourceGroupName "TestRG1" -Location "ChinaEast2" -AllocationMethod Static -Sku Standard
    
  2. 使用 New-AzVirtualNetworkGatewayIpConfig 创建网关 IP 地址配置。 创建 VPN 网关时会引用此配置。

    $vnet = Get-AzVirtualNetwork -Name "VNet1" -ResourceGroupName "TestRG1"
    $gwsubnet = Get-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet
    $gwipconfig = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig1 -SubnetId $gwsubnet.Id -PublicIpAddressId $gwpip.Id
    

创建 VPN 网关

在此步骤中,将为 VNet 配置和创建虚拟网络网关。 有关身份验证和隧道类型的更完整信息,请参阅本文 Azure 门户版本中的指定隧道和身份验证类型

  • -GatewayType 必须是 Vpn,-VpnType 必须是 RouteBased
  • -VpnClientProtocol 用来指定要启用的隧道的类型。 隧道选项为 OpenVPN、SSTP 和 IKEv2。 可以选择启用其中之一或任何受支持的组合。 如果要启用多个类型,请以逗号分隔的形式指定名称。 不能同时启用 OpenVPN 和 SSTP。 Android 和 Linux 上的 strongSwan 客户端以及 macOS 上的本机 IKEv2 VPN 客户端仅会使用 IKEv2 隧道进行连接。 Windows 客户端会首先尝试 IKEv2,如果不能连接,则会回退到 SSTP。 可以使用 OpenVPN 客户端连接到 OpenVPN 隧道类型。
  • 虚拟网络网关“基本”SKU 不支持 IKEv2、OpenVPN 或 RADIUS 身份验证。 如果计划让 Mac 客户端连接到虚拟网络,请不要使用基本 SKU。
  • VPN 网关可能需要 45 分钟或更长时间才能建立,具体取决于所选择的网关 SKU
  1. 使用 New-AzVirtualNetworkGateway 创建网关类型为“Vpn”的虚拟网络网关。

    在此示例中,我们使用 VpnGw2 第 2 代 SKU。 如果看到与 GatewaySKU 值相关的 ValidateSet 错误并且正在本地运行这些命令,请验证是否已安装最新版本的 PowerShell cmdlet。 最新版本包含最新网关 SKU 的新验证值。

    New-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1" `
    -Location "ChinaEast2" -IpConfigurations $gwipconfig -GatewayType Vpn `
    -VpnType RouteBased -EnableBgp $false -GatewaySku VpnGw2 -VpnGatewayGeneration "Generation2" -VpnClientProtocol IkeV2,OpenVPN
    
  2. 创建网关后,可以使用以下示例进行查看。

    Get-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroup TestRG1
    

添加 VPN 客户端地址池

创建完 VPN 网关后即可添加 VPN 客户端地址池。 VPN 客户端地址池是 VPN 客户端在连接时要从中接收 IP 地址的范围。 使用专用 IP 地址范围时,该范围不得与要通过其进行连接的本地位置重叠,也不得与要连接到其中的 VNet 重叠。

  1. 声明以下变量:

    $VNetName  = "VNet1"
    $VPNClientAddressPool = "172.16.201.0/24"
    $RG = "TestRG1"
    $Location = "ChinaEast2"
    $GWName = "VNet1GW"
    
  2. 添加 VPN 客户端地址池:

    $Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GWName
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway -VpnClientAddressPool $VPNClientAddressPool
    

生成证书

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

如果使用自签名证书,这些证书必须使用特定的参数创建。 对于运行 Windows 10 或更高版本的 Windows 计算机,可以使用有关 PowerShell 的说明创建自签名证书。 如果运行的不是 Windows 10 或更高版本,请改用 MakeCert

生成自签名根证书和客户端证书时,必须按说明中的步骤操作,这一点很重要。 否则,生成的证书将不兼容 P2S 连接,并且会出现连接错误。

根证书

  1. 获取根证书的 .cer 文件。 你可以使用通过企业解决方案生成的根证书(推荐),或者生成自签名证书。 创建根证书后,将公共证书数据(不是私钥)作为 Base64 编码的 X.509 .cer 文件导出。 稍后,请将此文件上传到 Azure。

    • 企业证书: 如果使用的是企业级解决方案,可以使用现有的证书链。 获取要使用的根证书的 .cer 文件。

    • 自签名根证书: 如果使用的不是企业证书解决方案,请创建自签名根证书。 否则,创建的证书将不兼容 P2S 连接,客户端会在尝试进行连接时收到连接错误。 可以使用 Azure PowerShell、MakeCert 或 OpenSSL。 以下文章中的步骤介绍了如何生成兼容的自签名根证书:

  2. 创建根证书后,将公共证书数据(不是私钥)作为 Base64 编码的 X.509 .cer 文件导出

客户端证书

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

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

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

    • 企业证书:

      • 如果使用的是企业证书解决方案,请使用通用名称值格式 name@yourdomain.com 生成客户端证书, 而不要使用“域名\用户名”格式。

      • 请确保客户端证书基于“用户”证书模板,该模板将“客户端身份验证”列为用户列表中的第一项。 检查证书的方式是:双击证书,然后在“详细信息”选项卡中查看“增强型密钥用法” 。

    • 自签名根证书: 按照下述某篇 P2S 证书文章中的步骤操作,使创建的客户端证书兼容 P2S 连接。

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

      这些文章中的步骤可生成兼容的客户端证书,然后你可以导出和分发该证书。

      • 适用于 Windows 10 或更高版本 PowerShell 的说明:按照这些说明进行操作时,需要使用 Windows 10(或更高版本)和 PowerShell 来生成证书。 生成的证书可以安装在任何受支持的 P2S 客户端上。

      • 适用于 MakeCert 的说明:如果无权访问用于生成证书的 Windows 10 或更高版本计算机,则可使用 MakeCert。 虽然 MakeCert 已弃用,但仍可使用它来生成证书。 可以将生成的证书安装在任何受支持的 P2S 客户端上。

      • Linux:请参阅 strongSwanOpenSSL 说明。

  2. 生成客户端证书后,将其导出。 每个客户端计算机都必须有一个客户端证书才能进行连接和身份验证。

上传根证书的公钥信息

验证 VPN 网关是否已创建完毕。 创建完以后,即可为委托给 Azure 的根证书上传 .cer 文件(其中包含公钥信息)。 上传 .cer 文件后,Azure 可以使用该文件对已安装客户端证书(根据可信根证书生成)的客户端进行身份验证。 可在以后根据需要上传更多的可信根证书文件(最多 20 个)。

注意

可以在计算机上本地使用 PowerShell,按照 Azure 门户步骤

  1. 为证书名称声明变量,将值替换为自己的值。

    $P2SRootCertName = "P2SRootCert.cer"
    
  2. 将文件路径替换为自己的路径,然后运行 cmdlet。

    $filePathForCert = "C:\cert\P2SRootCert.cer"
    $cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2($filePathForCert)
    $CertBase64 = [system.convert]::ToBase64String($cert.RawData)
    
  3. 将公钥信息上传到 Azure。 上传证书信息以后,Azure 就会将该证书视为受信任的根证书。 上传时,请确保在本地计算机上运行 PowerShell,或者可以使用 Azure 门户步骤。 上传完成后,你会看到显示 PublicCertData 的 PowerShell 返回内容。 证书上传过程大约需要 10 分钟才能完成。

    Add-AzVpnClientRootCertificate -VpnClientRootCertificateName $P2SRootCertName -VirtualNetworkGatewayname "VNet1GW" -ResourceGroupName "TestRG1" -PublicCertData $CertBase64
    

安装已导出的客户端证书

以下步骤有助于在 Windows 客户端上进行安装。 有关其他客户端和详细信息,请参阅安装客户端证书

  1. 导出客户端证书后,找到并复制 .pfx 文件,将其复制到客户端计算机。
  2. 在客户端计算机上,双击 .pfx 文件以进行安装。 将“存储位置”保留为“当前用户”,并选择“下一步” 。
  3. 在“要导入的文件”页上,不要进行任何更改。 选择“下一步”。
  4. 在“私钥保护”页上,输入证书的密码,或验证安全主体是否正确,并选择“下一步” 。
  5. 在“证书存储”页上,保留默认位置,并选择“下一步” 。
  6. 选择“完成”。 在证书安装的“安全警告”上,选择“是” 。 你可以放心地对此安全警告选择“是”,因为你生成了证书。
  7. 现已成功导入证书。

确保已将客户端证书与整个证书链(默认)一起作为 .pfx 导出。 否则,根证书信息就不会出现在客户端计算机上,客户端将无法进行正常的身份验证。

生成并下载 VPN 客户端配置文件配置包

每个 VPN 客户端都是使用生成和下载的 VPN 客户端配置文件配置包中的文件配置的。 配置包中有特定于已创建的 VPN 网关的设置。 如果对网关进行更改(例如更改隧道类型、证书或身份验证类型),则必须另外生成一个 VPN 客户端配置文件配置包,并将其安装在每个客户端上。 否则,VPN 客户端可能无法连接。

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

$profile=New-AzVpnClientConfiguration -ResourceGroupName "TestRG" -Name "VNet1GW" -AuthenticationMethod "EapTls"

$profile.VPNProfileSASUrl

将 URL 复制到浏览器以下载 zip 文件。

配置 VPN 客户端并连接到 Azure

有关配置 VPN 客户端并连接到 Azure 的步骤,请参阅以下文章:

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

验证连接

这些说明适用于 Windows 客户端。

  1. 如果要验证用户的 VPN 连接是否处于活动状态,请打开提升的命令提示符,并运行 ipconfig/all

  2. 查看结果。 请注意,收到的 IP 地址是在配置中指定的 P2S VPN 客户端地址池中的地址之一。 结果与以下示例类似:

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

连接到虚拟机

这些说明适用于 Windows 客户端。

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

  1. 定位专用 IP 地址。 如需查找 VM 的专用 IP 地址,可以通过在 Azure 门户中查看 VM 的属性或通过使用 PowerShell 实现。

    • Azure 门户:在 Azure 门户中找到你的 VM。 查看 VM 的属性。 专用 IP 地址已列出。

    • PowerShell:通过此示例查看资源组中 VM 的列表及其专用 IP 地址。 在使用此示例之前不需对其进行修改。

      $VMs = Get-AzVM
      $Nics = Get-AzNetworkInterface | Where-Object VirtualMachine -ne $null
      
      foreach ($Nic in $Nics) {
      $VM = $VMs | Where-Object -Property Id -eq $Nic.VirtualMachine.Id
      $Prv = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAddress
      $Alloc = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAllocationMethod
      Write-Output "$($VM.Name): $Prv,$Alloc"
      }
      
  2. 验证是否已连接到虚拟网络。

  3. 通过在任务栏上的搜索框中输入“RDP”或“远程桌面连接”,打开远程桌面连接。 然后选择“远程桌面连接”。 也可在 PowerShell 中使用 mstsc 命令来打开远程桌面连接

  4. 在“远程桌面连接”中,输入 VM 的专用 IP 地址。 你可以选择“显示选项”来调整其他设置,然后进行连接

如果无法通过 VPN 连接连接到 VM,请检查以下各项:

  • 验证 VPN 连接是否成功。
  • 验证是否已连接到 VM 的专用 IP 地址。
  • 如果可以使用专用 IP 地址连接到 VM,但不能使用计算机名称进行连接,则请验证是否已正确配置 DNS。 若要详细了解如何对 VM 进行名称解析,请参阅针对 VM 的名称解析

若要详细了解 RDP 连接,请参阅排查远程桌面连接到 VM 的问题

  • 验证是否在为 VNet 指定 DNS 服务器 IP 地址之后,才生成 VPN 客户端配置包。 如果更新了 DNS 服务器 IP 地址,请生成并安装新的 VPN 客户端配置包。

  • 使用“ipconfig”来检查分配给以太网适配器的 IPv4 地址,该适配器所在的计算机正是你要从其进行连接的计算机。 如果该 IP 地址位于要连接到的 VNet 的地址范围内,或者位于 VPNClientAddressPool 的地址范围内,则称为地址空间重叠。 当地址空间以这种方式重叠时,网络流量不会抵达 Azure,而是呆在本地网络中。

添加或删除根证书

可以在 Azure 中添加和删除受信任的根证书。 删除根证书时,如果客户端的证书是从该根证书生成的,则客户端不能进行身份验证,因此无法进行连接。 如果希望客户端进行身份验证和连接,则需安装新客户端证书,该证书是从委托(上传)给 Azure 的根证书生成的。 这些步骤需要将 Azure PowerShell cmdlet 安装在计算机本地。 还可以使用 Azure 门户来添加根证书。

添加:

最多可以将 20 个根证书 .cer 文件添加到 Azure。 以下步骤用于添加根证书。

  1. 准备要上传的 .cer 文件:

    $filePathForCert = "C:\cert\P2SRootCert3.cer"
    $cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2($filePathForCert)
    $CertBase64_3 = [system.convert]::ToBase64String($cert.RawData)
    
  2. 上传该文件。 一次只能上传一个文件。

    Add-AzVpnClientRootCertificate -VpnClientRootCertificateName $P2SRootCertName -VirtualNetworkGatewayname "VNet1GW" -ResourceGroupName "TestRG1" -PublicCertData $CertBase64_3
    
  3. 若要验证是否已上传证书文件,请执行以下操作:

    Get-AzVpnClientRootCertificate -ResourceGroupName "TestRG1" `
    -VirtualNetworkGatewayName "VNet1GW"
    

删除:

  1. 声明变量。 修改该示例中的变量,以匹配要删除的证书。

    $GWName = "Name_of_virtual_network_gateway"
    $RG = "Name_of_resource_group"
    $P2SRootCertName2 = "ARMP2SRootCert2.cer"
    $MyP2SCertPubKeyBase64_2 = "MIIC/zCCAeugAwIBAgIQKazxzFjMkp9JRiX+tkTfSzAJBgUrDgMCHQUAMBgxFjAUBgNVBAMTDU15UDJTUm9vdENlcnQwHhcNMTUxMjE5MDI1MTIxWhcNMzkxMjMxMjM1OTU5WjAYMRYwFAYDVQQDEw1NeVAyU1Jvb3RDZXJ0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyjIXoWy8xE/GF1OSIvUaA0bxBjZ1PJfcXkMWsHPzvhWc2esOKrVQtgFgDz4ggAnOUFEkFaszjiHdnXv3mjzE2SpmAVIZPf2/yPWqkoHwkmrp6BpOvNVOpKxaGPOuK8+dql1xcL0eCkt69g4lxy0FGRFkBcSIgVTViS9wjuuS7LPo5+OXgyFkAY3pSDiMzQCkRGNFgw5WGMHRDAiruDQF1ciLNojAQCsDdLnI3pDYsvRW73HZEhmOqRRnJQe6VekvBYKLvnKaxUTKhFIYwuymHBB96nMFdRUKCZIiWRIy8Hc8+sQEsAML2EItAjQv4+fqgYiFdSWqnQCPf/7IZbotgQIDAQABo00wSzBJBgNVHQEEQjBAgBAkuVrWvFsCJAdK5pb/eoCNoRowGDEWMBQGA1UEAxMNTXlQMlNSb290Q2VydIIQKazxzFjMkp9JRiX+tkTfSzAJBgUrDgMCHQUAA4IBAQA223veAZEIar9N12ubNH2+HwZASNzDVNqspkPKD97TXfKHlPlIcS43TaYkTz38eVrwI6E0yDk4jAuPaKnPuPYFRj9w540SvY6PdOUwDoEqpIcAVp+b4VYwxPL6oyEQ8wnOYuoAK1hhh20lCbo8h9mMy9ofU+RP6HJ7lTqupLfXdID/XevI8tW6Dm+C/wCeV3EmIlO9KUoblD/e24zlo3YzOtbyXwTIh34T0fO/zQvUuBqZMcIPfM1cDvqcqiEFLWvWKoAnxbzckye2uk1gHO52d8AVL3mGiX8wBJkjc/pMdxrEvvCzJkltBmqxTM6XjDJALuVh16qFlqgTWCIcb7ju"
    
  2. 删除证书。

    Remove-AzVpnClientRootCertificate -VpnClientRootCertificateName $P2SRootCertName2 -VirtualNetworkGatewayName $GWName -ResourceGroupName $RG -PublicCertData $MyP2SCertPubKeyBase64_2
    
  3. 使用以下示例来验证是否已成功删除证书。

    Get-AzVpnClientRootCertificate -ResourceGroupName "TestRG1" `
    -VirtualNetworkGatewayName "VNet1GW"
    

撤销或恢复客户端证书

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

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

若要撤消:

  1. 检索客户端证书指纹。 有关详细信息,请参阅如何检索证书的指纹

  2. 将信息复制到一个文本编辑器,删除所有空格,使之成为一个连续的字符串。 该字符串在下一步声明为变量。

  3. 声明变量。 确保声明在前面的步骤中检索的指纹。

    $RevokedClientCert1 = "NameofCertificate"
    $RevokedThumbprint1 = "‎51ab1edd8da4cfed77e20061c5eb6d2ef2f778c7"
    $GWName = "Name_of_virtual_network_gateway"
    $RG = "Name_of_resource_group"
    
  4. 将指纹添加到已吊销证书的列表。 添加指纹后,会显示“成功”。

    Add-AzVpnClientRevokedCertificate -VpnClientRevokedCertificateName $RevokedClientCert1 `
    -VirtualNetworkGatewayName $GWName -ResourceGroupName $RG `
    -Thumbprint $RevokedThumbprint1
    
  5. 确认指纹已添加到证书吊销列表。

    Get-AzVpnClientRevokedCertificate -VirtualNetworkGatewayName $GWName -ResourceGroupName $RG
    
  6. 添加指纹后,不再可以使用证书来连接。 客户端在尝试使用此证书进行连接时,会收到一条消息,指出证书不再有效。

复原:

可以通过从吊销的客户端证书列表中删除指纹来恢复客户端证书。

  1. 声明变量。 确保为需要恢复的证书声明正确的指纹。

    $RevokedClientCert1 = "NameofCertificate"
    $RevokedThumbprint1 = "‎51ab1edd8da4cfed77e20061c5eb6d2ef2f778c7"
    $GWName = "Name_of_virtual_network_gateway"
    $RG = "Name_of_resource_group"
    
  2. 从证书吊销列表中删除证书指纹。

    Remove-AzVpnClientRevokedCertificate -VpnClientRevokedCertificateName $RevokedClientCert1 `
    -VirtualNetworkGatewayName $GWName -ResourceGroupName $RG -Thumbprint $RevokedThumbprint1
    
  3. 检查指纹是否已从吊销列表中删除。

    Get-AzVpnClientRevokedCertificate -VirtualNetworkGatewayName $GWName -ResourceGroupName $RG
    

P2S 常见问题解答

有关其他 P2S 信息,请参阅 VPN 网关 P2S 常见问题解答

后续步骤

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

有关 P2S 故障排除信息,请参阅故障排除:Azure P2S 连接问题