はじめに
今回は Entra ID (Azure AD) で自己署名の証明書ベース認証 (CBA) を試してみようと題して、Windows PowerShell を使った自己署名のルート証明書の作成から、作成したクライアント証明書で Microsoft 365 サービスにサインインするまでの流れを紹介しようと思います。今回は証明書失効リスト (CRL) の配布ポイントを使用しない簡易的な方法で実装していますが、本番利用する場合は Microsoft 公式の前提条件に従ってください。
次の前提条件が満たされていることを確認します。
Azure AD 証明書ベースの認証を構成する方法 – Microsoft Entra | Microsoft Learn
- Azure AD に少なくとも 1 つの証明機関 (CA) と任意の中間 CA が構成されている。
- ユーザーは、Azure AD に対して認証を行うために、クライアント認証を目的としたユーザー証明書 (テナントで構成された信頼済み公開キー基盤から発行されたもの) にアクセスできること。
- 各 CA には、インターネットに接続する URL から参照できる証明書失効リスト (CRL) が必要です。 信頼された CA に CRL が構成されていない場合、Azure AD で CRL チェックは実行されません。ユーザー証明書の失効も機能せず、認証はブロックされません。
ルート CA とクライアント証明書を作成しよう
1. ルート証明書とクライアント証明書の作成は以下の記事を参考に作成しています。
ルート証明書を使ったサーバ証明書・クライアント証明書の作成方法│NDW (nextdoorwith.info)
Windows PowerShell を起動し、以下のコマンドレットを実行します。コマンドレットのパラメータの意味については上記の参考記事をご確認ください。New-SelfSignedCertificate コマンドレットで作成したルート CA を Export-Certificate で .cer ファイルにエクスポートしています。
$cert = New-SelfSignedCertificate `
-Subject "SME Secure Root CA" -NotAfter $(Get-Date).AddDays(3650) `
-CertStoreLocation cert:\CurrentUser\My `
-KeyUsage CertSign,CRLSign `
-TextExtension @("2.5.29.19={text}CA=true&pathlength=0")
Export-Certificate -Cert $cert -FilePath "C:\Work\cert\SME Secure Root CA.cer"
2. エクスポートしたルート CA を信頼されたルート証明機関にインストールします。以下のコマンドレットを使用します。セキュリティ警告のダイアログが表示されるので [はい] をクリックします。
Import-Certificate -Cert cert:\CurrentUser\Root -FilePath "C:\Work\cert\SME Secure Root CA.cer"
3. 発行したルート証明書を使ってクライアント証明書を作成します。以下のコマンドレットを使用します。
$client = New-SelfSignedCertificate `
-Subject "CN=TEST User01, O=SME Secure, C=Japan, E=user01@smejpsec.com" `
-NotAfter $(Get-Date).AddDays(3650) `
-CertStoreLocation cert:\CurrentUser\My `
-Signer $cert `
-KeyUsage DigitalSignature `
-TextExtension @( `
"2.5.29.37={text}1.3.6.1.5.5.7.3.2", `
"2.5.29.17={text}upn=user01@smejpsec.com" `
)
Entra ID 証明機関の登録と認証方法の設定をしよう
前提条件
本環境では、条件付きアクセス制御ですべてのユーザーに対して多要素認証を強制しています。また、CBA を適用するためのセキュリティグループをあらかじめ設定しておきます。
設定手順
1. Microsoft Entra 管理センター (https://entra.microsoft.com) にアクセスします。ナビゲーションメニューの [保護]-[表示数を増やす] を選択します。
2. ナビゲーションメニューの [Security Center] を選択し、左ペインの [証明機関] をクリックします。
3. 証明機関の画面が表示されるので [アップロード] をクリックします。画面右側に証明書ファイルのアップロードの画面が表示されるので、先ほどエクスポートした .cer ファイルをアップロードします。また、ルート CA 証明書であるのラジオボタンを [はい] に設定の上 [追加] をクリックします。
4. ナビゲーションメニューの [認証方法] を選択し、認証方法ポリシーの [証明書ベースの認証] を選択します。
5. 証明書ベースの認証の設定画面が表示されるので [有効にする] のトグルをオンにします。また、ターゲットを絞るため [グループの選択] を選択し [グループの追加] をクリックします。
6. グループの追加画面が表示されるので、あらかじめ設定しておいた CBA 用グループを選択します。
7. [構成] タブに移動し、保護レベルを [多要素認証] に変更します。さらに規則の追加をクリックします。
8. ルールの編集画面が表示されるので [証明書の発行者] を選択の上、証明書の発行者識別子を先ほど証明機関で登録したルート CA を選択し、保護レベルを [多要素認証] に設定します。
9. 最後に、画面下部の [確認しました] を選択して [保存] をクリックします。ポリシーの反映には数十分から最大 1 時間程度要する場合があります。
CBA の動作確認をしよう
1. マイアプリ (https://myapps.microsoft.com) にアクセスし、サインインを試行します。アプリ通知やパスワードの入力が求められた場合は [その他のサインイン方法] を選択します。
2. サインインする方法の選択画面が表示されるので [証明書またはスマートカードを使用する] を選択します。
3. ブラウザで証明書選択ダイアログが表示されるので、ルート CA で発行したクライアント証明書を選択します。表示はブラウザによって異なります。本環境では Microsoft Edge を使用しています。
4. マイアプリにアクセスすることができました。
終わりに
今回は Entra ID (Azure AD) で自己署名の証明書ベース認証 (CBA) を試してみようと題して、Windows PowerShell を使った自己署名のルート証明書の作成から、作成したクライアント証明書で Microsoft 365 サービスにサインインするまでの流れを紹介しました。動作確認する場合の参考にしてみてください。
コメント