
ポイント対サイト VPN 接続を構成する際の証明書生成について解説します。
目次
ポイント対サイト(P2S)VPN接続とは
Azure Vnet と個々のクライアント(Windows や Linux など)とを VPN でつなぐ接続方法です。 VPN 接続の構成については、また別途解説します。 今回は構成の際利用する証明書について、少々はまった所があったのでそこを解説したいと思います。
証明書について
証明書は、ポイント対サイト VPN の VPN クライアントを認証するために、Azure によって使用されます。
ルート証明書(Azure 側)、クライアント証明書(端末側)の2種類の証明書を利用します。
ルート証明書
ルート証明書の中にも2種類証明書があります。
- エンタープライズ証明書 エンタープライズ ソリューションを使用している場合は、既存の証明書チェーンを使うことができます。 使用するルート証明書の .cer ファイルを取得します。
- 自己署名証明書 エンタープライズ証明書ソリューションを使用していない場合は、自己署名ルート証明書を作成します。 そうしないと、作成する証明書と P2S 接続との互換性がなくなり、クライアントが接続しようとすると接続エラーになります。
クライアント証明書
ルート証明書の種類に応じて、クライアント証明書の生成方法も異なります。
- エンタープライズ証明書 エンタープライズ証明書ソリューションを使用している場合は、共通名の値の形式 name@yourdomain.com を使用してクライアント証明書を生成します。
- 自己署名証明書自己署名証明書の場合は3パターン生成方法があります。
- Windows 10 + PowerShell で生成する。 こちらは Windows 10 もしくは Windows Server 2016 以降であれば、以下の URL にある PowerShell コードを実行すれば生成可能です。 https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-certificates-point-to-site
- MakeCert.exe を利用して生成する。 マイクロソフトとしては非推奨となりましたが、2020年1月現在はまだ利用できます。 以下マイクロソフトのドキュメント サイトの URL です。 https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-certificates-point-to-site-makecert 少々分かりにくかったのでこちらを今回解説します。
- Linux で生成する。 Azure CLI と strongSwan というツールを利用して生成します。 以下 URL を参考にコマンドを実行すれば良いので、こちらも迷わないかと思います。 https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-certificates-point-to-site-linux
MakeCert を利用して証明書を生成する
マイクロソフトのドキュメント サイトによると、最初に MakeCert をダウンロードとなっていますが、いきなり躓きました。

リンク先に行ってもダウンロード ファイルがなく、困ってしまいました。 MakeCert Download 等で検索してみたところ、怪しい日本語翻訳のサイトか、古い情報ばかりで Windows 10 SDK では MakeCert が見つかりませんでしたとの記事も。 もう一度マイクロソフトのサイトをよく見ると Microsoft Windows Software Development Kit の /Bin フォルダーにインストールされていますと書いてありました。

取り敢えず、Windows 10 SDK をダウンロードしてインストールした所、確かに大雑把に言えば /Bin の中にありました。
64bit の場合 C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64
32bitの場合 C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86
デフォルトのままインストールすると、3GB 必要だったので、最小限のインストールにしたかったのですが、最低でも 1GB は必要なようです。 以下最小限のインストール方法です。
Windows 10 SDK のサイトからインストーラをダウンロードし実行します。 https://developer.microsoft.com/ja-jp/windows/downloads/windows-10-sdk

「Next」をクリック。

利用状況をマイクロソフトに送信するか聞かれます。 送信しないのであれば、「No」を選択して、「Next」をクリックします。

ライセンス許諾です。 「Accept」をクリック。

Windows SDK Signing Tools for Desktop Apps と Windows SDK for UWP Managed Apps のみチェックして、「Install」をクリック。

UACが表示されたら、「はい」をクリック。

「Close」をクリック。

これで Windows SDK のインストールが完了したので、以下の場所に MakeCert.exe が格納されています。 64bit の場合

32bit の場合

証明書の生成は、ドキュメント サイトの説明通りにコマンドを実行すれば作成できます。 以下参考までに 64bit 環境での生成例です。
コマンドプロンプト等でMakeCert.exe の場所に移動します。
cd C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64
個人証明書ストアで証明書を作成とインストール。 CN=P2SRootCert でファイル名を指定できます。
makecert -sky exchange -r -n "CN=P2SRootCert" -pe -a sha256 -len 2048 -ss My
ユーザー証明書の管理ツール(certmgr)の個人、証明書の中にインストールされます。

流れでそのままクライアント証明書も作成します。 以下のコマンドを実行すると、クライアント証明書を作成できます。
makecert.exe -n "CN=P2SChildCert" -pe -sky exchange -m 96 -ss My -in "P2SRootCert" -is my -a sha256

公開キーのエクスポート
作成したルート証明書から、Azure に取り込むためのファイルをエクスポートします。
作成した「P2SRootCert」を右クリックして、「すべてのタスク」、「エクスポート」の順にクリックします。

証明書のエクスポート ウィザードが立ち上がるので、「次へ」をクリックします。

「いいえ、秘密キーをエクスポートしません」を選択して、「次へ」をクリック。

「Base 64 encoded X.509」を選択して、「次へ」をクリック。

保存場所とファイル名を指定して、「次へ」をクリック。

「完了」をクリック。

「OK」をクリック。

保存した場所を開くと、証明書ファイルが格納されています。 右クリックしてプログラムから開く、メモ帳をクリックする等して、メモ帳で証明書ファイルを開きます。

「BEGIN CERTIFICATE」と「END CERTIFICATE」の間を選択してコピーします。

Azure ポータルの仮想ネットワーク ゲートウェイ、ポイント対サイトの構成にある、「公開証明書データ」に貼り付け、名前を指定して「保存」をクリックすると、アップロード完了です。

あとは、VPNクライアントのダウンロードを行い、インストール、接続すれば、ポイント対サイト接続の完了です。
少しでもお役に立てれば幸いです。