P2S VPN Gateway 証明書認証のサーバー設定を構成する - PowerShell

この記事では、Azure PowerShell を使って、Windows、Linux、または macOS を実行している個々のクライアントを Azure 仮想ネットワーク (VNet) に安全に接続するためのポイント対サイト (P2S) VPN を構成する方法について説明します。 この記事には、PowerShell の基本的な構成手順が含まれています。 この種の P2S VPN の作成に関する包括的な情報については、Azure portal を使ったポイント対サイト VPN の構成に関する Azure portal の記事を参照してください。

P2S VPN 接続は、自宅や会議室でのテレワークなど、リモートの場所から VNet に接続する場合に便利です。 VNet への接続を必要とするクライアントがごく少ない場合は、サイト対サイト VPN の代わりに P2S を使用することもできます。 P2S 接続に VPN デバイスや公開 IP アドレスは必要ありません。 P2S により、SSTP (Secure Socket トンネリング プロトコル) または IKEv2 経由の VPN 接続が作成されます。

コンピューターから Azure VNet へ接続する方法を示すポイント対サイト接続の図

P2S VPN の詳細については、「P2S VPN について」を参照してください。

P2S Azure 証明書認証接続には、以下のものが必要です。この演習ではこれらを構成します。

  • ルートベースの VPN ゲートウェイ (ポリシーベースではありません)。 VPN の種類の詳細については、「VPN Gateway の設定」を参照してください。
  • Azure にアップロードされた、ルート証明書の公開キー (.cer ファイル)。 証明書をアップロードすると、その証明書は信頼された証明書と見なされ、認証に使われます。
  • ルート証明書から生成されたクライアント証明書。 VNet に接続する予定の各クライアント コンピューターにインストールされるクライアント証明書です。 この証明書はクライアントの認証に使用されます。
  • VPN クライアント構成ファイル。 VPN クライアントは、VPN クライアント構成ファイルを使用して構成されます。 これらのファイルには、クライアントと VNet の接続に必要な情報が含まれています。 接続する各クライアントは、構成ファイルの設定を使って構成する必要があります。

前提条件

Azure サブスクリプションを持っていることを確認します。 Azure サブスクリプションをまだお持ちでない場合は、MSDN サブスクライバーの特典を有効にするか、無料アカウントにサインアップしてください。

Azure PowerShell

Azure Cloud Shell を使用することも、PowerShell をローカルで実行することもできます。 詳細については、「 Azure PowerShell のインストールと構成の方法」を参照してください。

  • この記事の多くの手順では、Azure Cloud Shell を使用できます。 ただし、Cloud Shell を使用して証明書を生成することはできません。 また、ルート証明書の公開キーをアップロードするには、ローカルの Azure PowerShell または Azure portal を使用する必要があります。

  • "The output object type of this cmdlet will be modified in a future release" (このコマンドレットの出力オブジェクトの種類は将来のリリースで変更される予定です) という警告が表示される場合があります。 これは想定される動作であり、これらの警告は無視してもかまいません。

サインイン

Azure Cloud Shell を使用している場合は、Cloudshell を開いた後にアカウントにサインインするように自動的に指示されます。 Connect-AzAccount を実行する必要はありません。 サインイン後も、Get-AzSubscriptionSelect-AzSubscription を使用して、必要に応じてサブスクリプションを変更できます。

PowerShell をローカルで実行している場合は、昇格された特権で PowerShell コンソールを開き、Azure アカウントに接続します。 Connect-AzAccount コマンドレットでは資格情報が求められます。 認証後にアカウント設定がダウンロードされ、Azure PowerShell で使用できるようになります。 Get-AzSubscriptionSelect-AzSubscription -SubscriptionName "Name of subscription" を使用してサブスクリプションを変更できます。

VNet を作成する

  1. New-AzResourceGroup を使用してリソース グループを作成します。

    New-AzResourceGroup -Name "TestRG1" -Location "EastUS"
    
  2. New-AzVirtualNetwork を使用して、仮想ネットワークを作成します。

    $vnet = New-AzVirtualNetwork `
    -ResourceGroupName "TestRG1" `
    -Location "EastUS" `
    -Name "VNet1" `
    -AddressPrefix 10.1.0.0/16
    
  3. New-AzVirtualNetworkSubnetConfig を使用して、FrontEnd と GatewaySubnet と次の名前でサブネットを作成します: 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-AzureRmVirtualNetwork を使用して、仮想ネットワークにサブネット構成を書き込みます。これにより、仮想ネットワークにサブネットが作成されます。

    $vnet | Set-AzVirtualNetwork
    

VPN ゲートウェイを作成する

パブリック IP アドレスの要求

VPN ゲートウェイには、パブリック IP アドレスが必要です。 これにはまず IP アドレスのリソースを要求したうえで、仮想ネットワーク ゲートウェイの作成時にそのリソースを参照する必要があります。 IP アドレスは、VPN ゲートウェイの作成時にリソースに対して静的に割り当てられます。 パブリック IP アドレスが変わるのは、ゲートウェイが削除され、再度作成されたときのみです。 VPN ゲートウェイのサイズ変更、リセット、その他の内部メンテナンス/アップグレードでは、IP アドレスは変わりません。

  1. Get-AzPublicIpAddress を使用する VPN Gateway のパブリック IP アドレスを要求します。

    $gwpip = New-AzPublicIpAddress -Name "GatewayIP" -ResourceGroupName "TestRG1" -Location "EastUS" -AllocationMethod Static -Sku Standard
    
  2. New-AzVirtualNetworkGatewayIpConfig を使用するゲートウェイ IP アドレス構成を作成します。 この構成は、VPN Gateway を作成するときに参照されます。

    $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 portal バージョンである「トンネルの種類と認証の種類を指定する」を参照してください。

  • -GatewayType は Vpn、-VpnType は RouteBased にする必要があります。
  • -VpnClientProtocol は、有効にするトンネルの種類を指定する際に使用します。 トンネルのオプションには、OpenVPN、SSTP、および IKEv2 があります。 いずれか 1 つを有効にすることも、サポートされるすべての組み合わせを有効にすることもできます。 複数の種類を有効にする場合は、名前をコンマで区切って指定します。 OpenVPN と SSTP は一緒に有効にすることができません。 Android と Linux の strongSwan クライアントおよび iOS と macOS のネイティブ IKEv2 VPN クライアントでは、接続に IKEv2 トンネルのみを使用します。 Windows クライアントでは最初に IKEv2 を試し、接続できなかった場合に SSTP を使用します。 OpenVPN クライアントを使用して、OpenVPN トンネルの種類に接続することができます。
  • 仮想ネットワーク ゲートウェイ 'Basic' SKU では、IKEv2、OpenVPN、RADIUS 認証はサポートされません。 Mac クライアントを仮想ネットワークに接続する予定がある場合は、Basic SKU を使用しないでください。
  • 選択するゲートウェイ SKU によっては、VPN ゲートウェイがビルドされるまでに 45 分以上かかる場合があります。
  1. New-AzVirtualNetworkGateway を使用するゲートウェイの種類 "Vpn" を含む仮想ネットワーク ゲートウェイを作成します。

    この例では、VpnGw2 (第 2 世代 SKU) を使用します。 GatewaySKU 値に関する ValidateSet エラーが表示され、ローカルでこれらのコマンドを実行している場合は、PowerShell コマンドレットの最新バージョンがインストールされていることを確認してください。 最新バージョンには、最新の Gateway SKU の新しい有効値が含まれています。

    New-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1" `
    -Location "EastUS" -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 アドレスの範囲です。 接続元であるオンプレミスの場所、または接続先にする VNet と重複しないプライベート IP アドレス範囲を使用してください。

  1. 次の変数を宣言します。

    $VNetName  = "VNet1"
    $VPNClientAddressPool = "172.16.201.0/24"
    $RG = "TestRG1"
    $Location = "EastUS"
    $GWName = "VNet1GW"
    
  2. VPN クライアント アドレス プールの追加:

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

証明書の生成

重要

Azure Cloud Shell を使用して証明書を生成することはできません。 このセクションで説明されているいずれかの方法を使用する必要があります。 PowerShell を使用する場合は、ローカルにインストールする必要があります。

証明書は、P2S VPN の VPN クライアントを認証するために、Azure によって使用されます。 そのため、ルート証明書の公開キー情報を Azure にアップロードします。 それにより、その公開キーは信頼できると見なされます。 信頼されたルート証明書からクライアント証明書を生成し、それを各クライアント コンピューターの [証明書 - 現在のユーザー] の [個人] 証明書ストアにインストールする必要があります。 この証明書は、クライアントで VNet への接続を開始するときに、そのクライアントを認証するために使用されます。

自己署名証明書を使用する場合は、特定のパラメーターを使って証明書を作成する必要があります。 Windows 10 以降を実行している Windows コンピューター用の PowerShell の手順を使用して、自己署名証明書を作成できます。 Windows 10 以降を実行していない場合は、代わりに MakeCert を使用します。

自己署名ルート証明書やクライアント証明書を生成するときは、これらの説明に記載されている手順に従うことが大切です。 そうしないと、生成する証明書が P2S 接続との互換性がなくなり、接続エラーが表示されます。

ルート証明書

  1. ルート証明書の .cer ファイルを取得します。 エンタープライズ ソリューションを使って生成されたルート証明書を使用することも (推奨)、自己署名証明書を生成することもできます。 ルート証明書の作成後、秘密キーではなく公開証明書データを、Base64 でエンコードされた X.509 .cer ファイルとしてエクスポートします。 このファイルは、後で Azure にアップロードします。

    • エンタープライズ証明書: エンタープライズ ソリューションを使用している場合は、既存の証明書チェーンを使うことができます。 使用するルート証明書の .cer ファイルを取得します。

    • 自己署名ルート証明書: エンタープライズ証明書ソリューションを使用していない場合は、自己署名ルート証明書を作成します。 そうしないと、作成する証明書と P2S 接続との互換性がなくなり、クライアントが接続しようとすると接続エラー メッセージを受信するようになります。 Azure PowerShell、MakeCert、または OpenSSL を使用できます。 以下の記事の手順では、互換性のある自己署名ルート証明書を生成する方法が説明されています。

      • Windows 10 以降の PowerShell の手順: これらの手順では、Windows 10 以降を実行しているコンピューターで PowerShell が必要です。 ルート証明書から生成されるクライアント証明書は、サポートされている任意の P2S クライアントにインストールすることができます。
      • MakeCert の手順: Windows 10 以降のコンピューターにアクセスできない場合は、MakeCert を使用します。 MakeCert は非推奨になりましたが、まだ証明書を生成するに使用することができます。 ルート証明書から生成されるクライアント証明書は、サポートされている任意の P2S クライアントにインストールすることができます。
      • Linux - OpenSSL での手順
      • Linux - strongSwan での手順
  2. ルート証明書の作成後、秘密キーではなく公開証明書データを、Base64 でエンコードされた X.509 .cer ファイルとしてエクスポートします。

クライアント証明書

  1. お客様がポイント対サイト接続を使用して VNet に接続する各クライアント コンピューターには、クライアント証明書がインストールされていなければなりません。 ルート証明書からそれを生成し、各クライアント コンピューターにインストールします。 有効なクライアント証明書をインストールしないと、クライアントが VNet への接続を試行したときに認証が失敗します。

    クライアントごとに一意の証明書を生成することも、複数のクライアントに同じ証明書を使用することもできます。 一意のクライアント証明書を生成する利点は、1 つの証明書を失効させることができる点です。 そうでなければ、複数のクライアントで同じクライアント証明書が認証に使用されていて、お客様がそれを失効させる場合に、その証明書が使用されているすべてのクライアントに対して新しい証明書を生成してインストールする必要があります。

    クライアント証明書は、次の方法を使用して生成できます。

    • エンタープライズ証明書:

      • エンタープライズ証明書ソリューションを使用している場合は、共通名の値の形式 name@yourdomain.com を使用してクライアント証明書を生成します。 domain name\username 形式の代わりに、この形式を使用します。

      • クライアント証明書が、ユーザー一覧の最初の項目が "クライアント認証" であるユーザー証明書テンプレートに基づいていることを確認します。 証明書を確認するには、それをダブルクリックし、 [詳細] タブの [拡張キー使用法] を表示します。

    • 自己署名ルート証明書: お客様が作成するクライアント証明書が P2S 接続との互換性を備えるよう、P2S 証明書に関する以下のいずれかの記事の手順に従ってください。

      自己署名ルート証明書からクライアント証明書を生成した場合、お客様が生成に使用したコンピューターにそれが自動的にインストールされます。 クライアント証明書を別のクライアント コンピューターにインストールしたい場合は、それを .pfx ファイルとして、証明書チェーン全体と共にエクスポートします。 そうすることで、クライアントの認証に必要なルート証明書情報が含まれている .pfx ファイルが作成されます。

      これらの記事の手順では、互換性のあるクライアント証明書が生成されます。この証明書をエクスポートして配布できます。

      • Windows 10 以降の PowerShell の手順: これらの手順で証明書を生成するには、Windows 10 以降、および PowerShell が必要です。 生成される証明書は、サポートされている任意の P2S クライアントにインストールできます。

      • MakeCert の手順: 証明書を生成する Windows 10 以降のコンピューターにアクセスできない場合は、MakeCert を使用します。 MakeCert は非推奨になりましたが、まだ証明書を生成するに使用することができます。 生成される証明書は、サポートされている任意の P2S クライアントにインストールできます。

      • Linux: strongSwan または OpenSSL の手順を参照してください。

  2. クライアント証明書を作成したら、それをエクスポートします。 各クライアント コンピューターには、接続と認証のためにクライアント証明書が必要です。

ルート証明書の公開キー情報のアップロード

VPN ゲートウェイの作成が完了していることを確認します。 この操作が完了した後は、信頼されたルート証明書の (公開キー情報を含む) .cer ファイルを Azure にアップロードできます。 .cer ファイルがアップロードされると、Azure ではそれを使用し、信頼されたルート証明書から生成されたクライアント証明書がインストールされているクライアントを認証できます。 その後は必要に応じて、最大で合計 20 個になるまで信頼されたルート証明書を追加でアップロードできます。

Note

Azure Cloud Shell を使用して .cer ファイルをアップロードすることはできません。 ローカル環境のコンピューターで PowerShell を使用するか、Azure portal の手順を使用できます。

  1. 証明書名のための変数を、独自の値に置き換えて宣言します。

    $P2SRootCertName = "P2SRootCert.cer"
    
  2. ファイルのパスを独自のパスに置換し、次のコマンドレットを実行します。

    $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 portal の手順を使用してください。 アップロードが完了すると、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 client
証明書
IKEv2、SSTP Windows ネイティブ VPN クライアント
IKEv2 macOS ネイティブ VPN クライアント
IKEv2 Linux strongSwan
OpenVPN Windows Azure VPN クライアント
OpenVPN クライアント
OpenVPN macOS OpenVPN クライアント
OpenVPN iOS OpenVPN クライアント
OpenVPN Linux Azure VPN クライアント
OpenVPN クライアント
Microsoft Entra ID
OpenVPN Windows Azure VPN クライアント
OpenVPN macOS Azure VPN クライアント
OpenVPN Linux 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 に接続できるかどうかを初めて確認する際に最も良い方法は、その VM のコンピューター名ではなく、プライベート IP アドレスを使って接続してみることです。 この方法であれば、名前の解決が適切に構成されているかではなく、VM に接続できるかどうかをテストすることができます。

  1. プライベート IP アドレスを特定します。 VM のプライベート IP アドレスは、Azure portal で VM のプロパティを表示するか、PowerShell を使うと確認できます。

    • Azure portal: Azure portal で 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 の名前解決に関するページを参照してください。

詳細については、VM に対するリモート デスクトップ接続のトラブルシューティングに関するページを参照してください。

  • VNet に対して DNS サーバーの IP アドレスが指定された後に VPN クライアント構成パッケージが生成されたことを確認します。 DNS サーバーの IP アドレスを更新した場合は、新しい VPN クライアント構成パッケージを生成してインストールしてください。

  • 接続元のコンピューターのイーサネット アダプターに割り当てられている IPv4 アドレスを 'ipconfig' を使用して確認します。 その IP アドレスが、接続先の VNet のアドレス範囲内または VPNClientAddressPool のアドレス範囲内にある場合、これを "アドレス空間の重複" といいます。 アドレス空間がこのように重複していると、ネットワーク トラフィックが Azure に到達せずローカル ネットワーク上に留まることになります。

ルート証明書を追加または削除するには

信頼されたルート証明書を Azure に追加したり、Azure から削除したりできます。 ルート証明書を削除すると、そのルート証明書から生成された証明書を持つクライアントは認証できなくなり、接続できなくなります。 クライアントの認証と接続を正常に実行できるようにするには、Azure に信頼されている (Azure にアップロードされている) ルート証明書から生成した新しいクライアント証明書をインストールする必要があります。 この手順では、(Azure Cloud Shell ではなく) お使いのコンピューターに Azure PowerShell コマンドレットがローカルにインストールされている必要があります。 また、Azure portal を使用してルート証明書を追加することもできます。

追加するには:

Azure には、最大 20 個のルート証明書 .cer ファイルを追加できます。 ルート証明書は次の手順で追加できます。

  1. アップロードする .cer ファイルを準備します。

    $filePathForCert = "C:\cert\P2SRootCert3.cer"
    $cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2($filePathForCert)
    $CertBase64_3 = [system.convert]::ToBase64String($cert.RawData)
    
  2. ファイルをアップロードします。 ファイルは一度に 1 つしかアップロードできません。

    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 接続を選択して拒否することができます。 これは、信頼されたルート証明書を削除することとは異なります。 信頼されたルート証明書 .cer を Azure から削除すると、失効したルート証明書によって生成または署名されたすべてのクライアント証明書のアクセス権が取り消されます。 ルート証明書ではなくクライアント証明書を失効させることで、ルート証明書から生成されたその他の証明書は、その後も認証に使用できます。

一般的な方法としては、ルート証明書を使用してチームまたは組織レベルでアクセスを管理し、失効したクライアント証明書を使用して、個々のユーザーの細かいアクセス制御を構成します。

取り消するには、次を実行します。

  1. クライアント証明書の拇印を取得します。 詳細については、「方法: 証明書のサムプリントを取得する」を参照してください。

  2. 情報をテキスト エディターにコピーし、文字列が 1 つにつながるようにスペースをすべて削除します。 この文字列を次の手順で変数として宣言します。

  3. 変数を宣言します。 必ず前の手順で取得した拇印を宣言してください。

    $RevokedClientCert1 = "NameofCertificate"
    $RevokedThumbprint1 = "‎51ab1edd8da4cfed77e20061c5eb6d2ef2f778c7"
    $GWName = "Name_of_virtual_network_gateway"
    $RG = "Name_of_resource_group"
    
  4. 失効した証明書のリストに拇印を追加します。 拇印が追加されると、"Succeeded" と表示されます。

    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 FAQ

P2S に関するその他の情報については、「VPN Gateway P2S に関する FAQ」を参照してください

次のステップ

接続が完成したら、仮想ネットワークに仮想マシンを追加することができます。 詳細については、Virtual Machines に関するページを参照してください。 ネットワークと仮想マシンの詳細については、「Azure と Linux の VM ネットワークの概要」を参照してください。

P2S のトラブルシューティング情報については、「Azure P2S 接続の問題のトラブルシューティング」を参照してください。