はじめに
AD CS などの認証局を使わずに、コマンドで ルート証明書 と クライアント証明書 を作成する手順です。
テスト目的で、簡単に 自己署名証明書(いわゆる オレオレ証明書)を作成できるので、便利です。
本記事では、Azure VPN P2S 用に、自己署名で クライアント証明書 を作成する説明となっていますが、同様の手順で その他の目的にも利用できると思います。
以下の記事では、Azure VPN P2S を構成する手順を紹介していますが、Azure 証明書認証 で利用するためには、作成した2種類の証明書をそれぞれ配備する必要があります。
- ルート証明書 = Azure VPN ゲートウェイに配置する
- クライアント証明書 = VPNを行うクライアント証明書に配置する
本記事では、基本的に 以下の公開情報の内容を踏襲して作業を行い、キャプチャと解説を行っています。
公開情報:P2S 用の証明書を生成してエクスポートする
なお、Web サービス や RAS の 役割サービスで構成する VPN サーバー用に 自己署名証明書を発行する場合は、サーバー証明書 を発行する必要があるため、手順が違います。そのような場合は、以下の記事を参照してください。
コマンドで Web サービス用の 自己署名証明書 を発行する手順
https://qiita.com/carol0226/items/8663842e2c7422de7e55
手順
作業は、任意の Windows OS 上で実行できます(クライアントでも Server でも可)
なお、私は Windows 11 24H2 上の PowerShell で検証しています。
この環境(つまり作業用 PC)で作成した ルート証明書 を Azure Portal にアップロードし、クライアント証明書 を VPN クライアントとなる PC へコピーしてインポートするシナリオになっています。
1. ルート証明書 の作成
以下のコマンドで、ルート証明書 を作成します。
Subject 欄の "P2SRootCert" は、任意の名前に変更しても大丈夫です。
NotAfter の AddMonths の (24) は、証明書の有効期限を 24ヵ月後に設定しています。
ここを可変させることで、有効期限を調整できます。
あとは、PowerShell(管理者)ウィンドウを開いて、貼り付け&実行 してください。
貼り付けるコマンド
$params = @{
Type = 'Custom'
Subject = '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
$cert
注意
上記のウィンドウは、閉じずに 次の章へ進んでください。
変数($cert)に保存された値を 次のコマンドで引き継いで利用しているためです。
公開情報:自己署名ルート証明書の作成
https://learn.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-certificates-point-to-site?wt.mc_id=MVP_407731#rootcert
2. クライアント証明書 の作成
以下のコマンドで、クライアント証明書 を作成します。
Subject 欄 と DnsName 欄 の "P2SChildCert" にしていますが、証明書を配布するクライアント PC のホスト名にしておくと管理しやすくなります。
NotAfter の AddMonths の (24) は、証明書の有効期限を 24ヵ月後に設定しています。
ここを可変させることで、有効期限を調整できます。
貼り付けるコマンド
$params = @{
Type = 'Custom'
Subject = 'CN=P2SChildCert'
DnsName = 'P2SChildCert'
KeySpec = 'Signature'
KeyExportPolicy = 'Exportable'
KeyLength = 2048
HashAlgorithm = 'sha256'
NotAfter = (Get-Date).AddMonths(24)
CertStoreLocation = 'Cert:\CurrentUser\My'
Signer = $cert
TextExtension = @(
'2.5.29.37={text}1.3.6.1.5.5.7.3.2')
}
New-SelfSignedCertificate @params
参考
Azure P2S VPN(Azure 証明書認証)は、1つのクライアント証明書を 複数台の PC にコピーして展開しても、認証することが可能です。
ここで、Subject と DnsName の値を 別の名前(ホスト名など)に変更しながら、同様にコマンドを連続実行することで、1つのルート証明書を基にした、複数台分のクライアント証明書を発行することも可能です。
公開情報:クライアント証明書の作成
https://learn.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-certificates-point-to-site?wt.mc_id=MVP_407731#clientcert
3. 作成された証明書の確認
この作業で、作成された証明書を目視確認します。
- スタートボタンを右クリックして、ファイル名を指定して実行 を選択します。
-
certmgr.msc と入力して、OK を押します。
- 下図のとおり、個人 の 証明書 ストア を開くと、作成された証明書を確認できます。
- 緑色 = ルート証明書
- 水色 = クライアント証明書
意図したように作成できなかった場合、その証明書を選択して 削除し、やり直すことが可能です。
その他の箇所への影響はないので、気軽に コマンド実行し、このウィンドウで削除できます。
なお、この作業で作成したもの以外の証明書もウィンドウに表示されている場合があります。
それらを削除すると、PC 上のアプリケーションなどの利用に影響が出る可能性があるため、気を付けてください。
4. エクスポート
4-1. ルート証明書のエクスポート
作成された証明書を、VPNゲートウェイ にアップロードするためには、一旦 エクスポートが必要です。
1.作成された ルート証明書 を右クリックして すべてのタスク から エクスポート を選択します。
3.以下の画面では、必ず "はい、秘密キーをエクスポートしません" を選択して 次へ を押します。
4.以下の画面では、"Base 64 encoded X.509 (.CER)" を選択して 次へ を押します。
5.① "参照" ボタンを押して、任意のファイル名を指定して、② のように表示されたことを確認したら、③ "次へ" を押します。
① を押した際に表示される画面
下図では、Cert という新規フォルダを作り、ファイル名を指定しています。
6.以下の画面が表示されれば OK です。完了 をクリックします。
8.フォルダを開くと、以下のように 保存された証明書を確認できます。
ここで、エクスポートした証明書を、以下の手順の 2章(Azure 側で行う作業)のアップロードに使うことができます。
P2S VPN - Azure 証明書認証 で接続する(2. Azure 側で行う作業)
https://qiita.com/carol0226/items/283497c10c94785ebd28
公開情報:ルート証明書の公開キー (.cer) のエクスポート
https://learn.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-certificates-point-to-site?wt.mc_id=MVP_407731#cer
4-2. クライアント証明書のエクスポート
作成された証明書を、各クライアントに配布するために、エクスポートが必要です。
1.作成された クライアント証明書 を右クリックして すべてのタスク から エクスポート を選択します。
3.以下の画面では、必ず "はい、秘密キーをエクスポートします" を選択して 次へ を押します。
4.以下の画面では、赤枠の2箇所にチェックが入っていることを確認して 次へ を押します。
※赤枠が既定値になっています。
5.以下の画面では、パスワード にチェックを入れ、パスワードを付与して 次へ を押します。
このパスワードは、クライアント証明書 が意図せず漏洩してしまった際の不正利用を防止する目的があります。
6.以下の画面では、証明書をエクスポートした際の ファイル名 を指定します。
※複数の証明書を配布する場合は、配布する PC の ホスト名 などにしておくと良いと思います。
7.以下の画面のように、指定した ファイルのパスと名称が表示されるため 次へ を押します。
8.以下の画面が表示されれば OK です。完了 をクリックします。
10.フォルダを開くと、以下のように 保存された証明書を確認できます。
公開情報:クライアント証明書のエクスポート
https://learn.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-certificates-point-to-site?wt.mc_id=MVP_407731#clientexport
5. クライアントへ ルート証明書 をインポートする
前章で作成した クライアント証明書 は、P2S VPN の接続を行わせたい 各クライアント PC 上にインストールされている必要があります。
本章では、エクスポートした証明書(.pfx)を、各クライアント PC へコピーして、インポート を行う手順を示します。
1.クライアント PC へコピーされた クライアント証明書 をダブルクリックします。
2.保存場所 は 現在のユーザー になっていることを確認して 次へ をクリックします。
3.(.pfx) ファイル が保存されていたパスが そのまま 指定されているため 次へ を押します。
4.証明書をエクスポートする際に設定したパスワードを入力して 次へ を押します。
5.証明書の種類に基づいて、自動的に証明書ストアを選択する になっていることを確認して 次へ を押します。
今回の操作の結果、ルート証明書 と クライアント証明書 の2種類が展開されます。
その際に、自動的 を選択していることで、それぞれの証明書は、以下のストアに自動的に配置されます。
- ルート証明書 = 信頼されたルート証明機関
- クライアント証明書 = 個人
7.今回は、自己署名の ルート証明書 をインストールするため、以下の確認画面が表示されます。
はい を押して先に進みます。
9.ファイル名を指定して実行 から、CertMgr.msc を起動します。
10.信頼されたルート証明機関 の証明書ストア に ルート証明書 が展開されていることを確認します。
11.個人 の 証明書ストア上に、クライアント証明書 が展開されていることを確認します。
12.続いて、上記の クライアント証明書 (P2SClildCert) をダブルクリックして開きます。
以下のウィンドウが表示されるため 証明のパス タブを開きます。
証明書の状態 欄が 「この証明書は問題ありません。」 になっていれば OK です。
以上で、クライアント PC へ ルート証明書・クライアント証明書 のインポートが完了しました。
クライアント PC から、目的のリソース(Azure P2S VPN など)への認証を行い、正常に アクセスできることを確認してください。
公開情報:P2S 証明書認証接続用のクライアント証明書のインストール
https://learn.microsoft.com/ja-jp/azure/vpn-gateway/point-to-site-how-to-vpn-client-install-azure-cert?wt.mc_id=MVP_407731