SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Azure AD 証明書ベースの認証 (CBA) の証明書をスタンドアロン CA で発行できるか検証してみる

leave a comment

先日公開した次の投稿では、CBA で使用する証明書は AD CS を使用していたのですが、発行機関としてはエンタープライズ CA として設定した環境を使用していました。

スタンドアロン CA から発行した証明書でも検証することができるかを試したところ、スタンドアロン CA でも要件が満たせたのでその際の作業内容を残しておきたいと思います。

今回は Windows Server 2022 を使用してスタンドアロン CA を作成しています。

今回使用した証明書の作成方法

スタンドアロン CA で証明書を作成する場合「証明機関 Web 登録」を使用して証明書の作成をするケースがあるかと思いますが、Web 登録を最新の環境で使用する場合、次のような問題が発生するようです。

今回は、Web 登録は使用せずに手動で証明書の要求を作成したいと思います。

証明書の要求の作成には、certreq コマンドを使用することができます。certreq コマンドを使用した証明書の作成については、次のドキュメントが参考になります。

コマンドラインを使用した操作については、次のような情報を参考にするとよいのではないでしょうか。

 

 

要求ファイル (.req) の作成

certreq コマンドには、「-new」というオプションがあり、このオプションを使用すると、inf ファイルを読み込み、要求ファイル (.req) を作成することが可能です。

不要な設定が含まれているかもしれませんが、今回は次のような inf ファイルを使用して要求を作成しています。

[Version]
Signature="$Windows NT$"

[NewRequest]
Subject="CN=aduser01"
Exportable=TRUE
KeyLength=2048
ExportableEncrypted=TRUE
MachineKeySet = TRUE
KeySpec = 1
KeyUsage = 0xA0
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
RequestType = PKCS10
ProviderType = 12

[EnhancedKeyUsageExtension]
OID = 1.3.6.1.5.5.7.3.2
OID = 1.3.6.1.4.1.311.20.2.2

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "UPN=aduser01@xxxxxx.onmicrosoft.com&"

 

この inf ファイルを使用した次のコマンドを実行して、要求ファイルを作成します。

certreq -new certreq.inf certreq.req

 

要求の送信

要求ファイルは、次のコマンドか証明機関の MMC を開いて新しい要求の送信で送信することが可能です。

certreq -submit certreq.req

image

これで保留中の要求として認識されるようになります。

 

保留中の要求の発行

保留中の要求の発行については、次のコマンドか証明期間の MMC から発行することができます。

certutil -resubmit <要求 ID>

 

これで、発行した証明書として要求が処理されます。

 

発行した証明書のエクスポート

発行した証明書のエクスポートについては次のコマンドか証明機関の MMC からエクスポートすることができます。

certreq -retrieve <要求 ID> cert.cer

 

要求に対しての応答の受付

ここまでの作業で、「certreq -new」を使用して作成した要求に対しての応答 (エクスポートした cer) ができましたので、「certreq -new」を実行した端末で、次のコマンドを実行して要求を受け付けます。

certreq -accept cert.cer

 

これで「certreq -accept」を実行した環境のローカルコンピューターの証明書 (certlm.msc) として、証明書が追加された状態となります。

image

次のようなコマンドでエクスポートすることで、証明書ベース認証の証明書として使用することができます。

Get-ChildItem -Path Cert:\LocalMachine\My | Export-PfxCertificate -FilePath aduser01.pfx -password (ConvertTo-SecureString -String "dummypassword" -Force -AsPlainText)

 

このような流れで、スタンドアロン CA を使用して証明すベース認証の証明書を作成することができました。

コンピューターのローカル証明書ストアを使用するのであれば、エクスポートした PFX を、CBA を使用するユーザーにインポートし、物理デバイスを使用するのであれば、エクスポートした PFX をスマートカードにインポートします。

私は YubiKey を使用しているのですが YubiKey であれば Smart card drivers and tools で提供されている YubiKey Manager を使用すると GUI で PFX ファイルを YubiKey の PIV の証明書としてインポートすることができ、これにより物理デバイスを使用した CBA も確認することができました。

CBA はモバイルデバイスでの動作もサポートされています。

手元に iPod Touch Gen5 (iOS 9.3.5) があったので、PFX ファイルを Azure ストレージ経由でダウンロードして、iOS の証明書 (プロファイル) として追加した状態で、Safari で Office のポータルにアクセスをしたところ、モバイルデバイスを使用した証明書ベース認証についても動作を確認することができました。

Azure ポータルについては、使用している Safari がサポートされないバージョンとなっているため、認証の検証ができなかったので、ブラウザで検証する場合には、Office のポータルのほうが検証しやすいかもしれません。

 

スタンドアロン CA の場合、デフォルトの証明書の有効期限は 1 年となっています。

実際の運用では、発行した証明書 / CRL の情報の有効期限についても考慮していく必要がありますが、機能を試すという場合には、このような流れで実施することができました。

Share

Written by Masayuki.Ozawa

9月 27th, 2022 at 9:13 am

Leave a Reply