外部のクライアントとAzure内のリソースを通信させるためには、
外部クライアントがVPNもしくはExpress RouteでAzureに接続されている必要があります。
今回はAzureにVirtual Network Gatewayを構築し、WindowsクライアントがAzureとVPN接続できるように設定します。
目次
使用環境
- Azure
- Virtual Network Gateway
- Windows 11
- Open VPN
実装手順
1. Virtual Network Gateway(VNG)のリソース作成
-
Azure portalで[仮想ネットワーク]->[作成]でVNetを作成
-
サブスクリプション、リソースグループ、VNet名、
デプロイ地域、セキュリティ、ネットワークなどを適切な値に設定 -
[確認および作成]->[作成]でVNetインスタンスを作成
-
-
Azure poralで[仮想ネットワークゲートウェイ]->[作成]でVNGを作成
-
サブスクリプション、リソースグループ、VNG名、
デプロイ地域、SKU、作成したVNet、パブリックIPなどを適切な値に設定 -
[確認および作成]->[作成]でVNetインスタンスを作成
-
2. 自己ルート証明書を作成しVNGに登録
-
管理者権限でpowershellを開いて以下のコマンドを入力し、ルート証明書を作成
$params = @{ Type = 'Custom' Subject = 'CN=P2SRootCert' KeySpec = 'Signature' KeyExportPolicy = 'Exportable' KeyUsage = 'CertSign' KeyUsageProperty = 'Sign' KeyLength = 2048 HashAlgorithm = 'sha256' NotAfter = (Get-Date).AddMonths(24) CertStoreLocation = 'Cert:\CurrentUser\My' } $cert = New-SelfSignedCertificate @params
-
同じPowerShellの画面で以下のコマンドを打ちクライアント証明書作成
$params = @{ Type = 'Custom' Subject = 'CN=P2SChildCert' DnsName = 'P2SChildCert' KeySpec = 'Signature' KeyExportPolicy = 'Exportable' KeyLength = 2048 HashAlgorithm = 'sha256' NotAfter = (Get-Date).AddMonths(18) CertStoreLocation = 'Cert:\CurrentUser\My' Signer = $cert TextExtension = @( '2.5.29.37={text}1.3.6.1.5.5.7.3.2') } New-SelfSignedCertificate @params
-
ルート証明書のcerファイルをエクスポート(参考リンク)
-
Windowsの検索欄から[ユーザー証明書の管理]へ移動
-
[個人]->[証明書]->[自身が作成したルート証明書]を選択
-
右クリックを押し、[すべてのタスク]->[エクスポート]をクリック
-
証明書に関するウィザードが出現するため[次へ]をクリック
-
[いいえ、秘密キーをエクスポートしません]->[Base 6. encoded X.509 (.CER)]と進み、出力先とファイル名を入力後、[次へ]->[保存]で証明書をエクスポート
-
-
Azureにルート証明書を登録(参考リンク)
-
先ほどエクスポートした証明書をメモ帳などのエディタで開く
-
---BEGIN CERTIFICATE---と---END CERTIFICATE---の間の内容をコピー
-
Azure portalから[仮想ネットワークゲートウェイ]->[作成したNGW]->[ポイント対サイトの構成]に進み、ルート証明書セクションに名前と公開証明書データの場所に先ほどコピーした内容を入力し、[保存]を押下
-
-
クライアント証明書をエクスポート(参考リンク)
-
Windowsの検索欄から[ユーザー証明書の管理]へ移動
-
[個人]->[証明書]->[自身が作成したクライアント証明書]を選択
-
右クリックを押し、[すべてのタスク]->[エクスポート]をクリック
-
証明書に関するウィザードが出現するため[次へ]をクリック
-
[はい、秘密キーをエクスポートします]を選択し[次へ]をクリック
-
[Personal Information Exchange - PKCS #12 (.PFX)]を選択し、[証明のパスにある証明書を可能であればすべて含む]、[証明書のプライバシーを有効にする]オプションを選んだ状態で[次へ]をクリック
-
パスワードを入力後、[次へ]をクリック
-
出力先とファイル名を入力後、[次へ]->[保存]で証明書をエクスポート
-
3. Open VPNの設定
-
OpenVPNクライアントのインストール
- 公式サイトから自身の環境にあったインストーラーをダウンロードし、インストール
-
AzureからVPN設定情報をダウンロード
-
Azure portalから[仮想ネットワークゲートウェイ]->[作成したNGW]->[ポイント対サイトの構成]上で[VPNクライアントのダウンロード]を押し、ファイルをダウンロード・解凍
-
解凍するとOpenVPNフォルダが存在するので、その中のvpnconfigファイルをメモ帳などのエディタで開いておく
-
先ほどエクスポートしたクライアント証明書(.pfx)から秘密キーなどの情報を取得するために以下のコマンドをpowershell上で入力し情報を出力
openssl pkcs12 -in "filename.pfx" -nodes -out "profileinfo.txt"
-
先ほど出力したファイルの中の情報をvpnconfigファイルに以下のように記載
// <cert> // $CLIENTCERTIFICATE // </cert> // の$CLIENTCERTIFICATEを消去し、クライアント証明書、ルート証明書の順番で記載する。 // クライアント証明書とルート証明書の見分け方はsubject = CN = <クライアント証明書名>が書かれているか、<ルート証明書名>かで見分ける。 // 今回は---BEGIN CERTIFICATE---から---END CERTIFICATE---の全てをコピーする。 // 上記のことに注意し、以下のように記載する。 <cert> ---BEGIN CERTIFICATE--- // クライアント証明書の内容 ---END CERTIFICATE--- ---BEGIN CERTIFICATE--- // ルート証明書の内容 ---END CERTIFICATE--- </cert> // 同様にプライベートキーも記載する <key> ---BEGIN PRIVATEKEY--- // プライベートキーの内容 ---END PRIVATEKEY--- </key>
-
vpnconfig.ovpnファイルをC:\Program Files\OpenVPN\config フォルダーにコピー
-
デスクトップ右下のシステムトレイからOpenVPNアイコン見つけ、右クリックし[接続]をクリックすることで、VPN接続が可能となる
-