様々な証明書を利用したADFSによる多要素認証

皆さんこんにちは。国井です。

MSテクノロジーを利用して多要素認証と言えば、Azure MFAサービスを利用したモバイルアプリや電話を利用した多要素認証を思い浮かべる方も多いと思いますが、ADFSサーバー固有の多要素認証機能に証明書を利用した方法があります。多要素認証と言えば「面倒くさい」というイメージが強いですが、証明書を利用した方法であれば、証明書がインストールされているか、いないかを自動的にチェックするので、ユーザーさんに手間をかけさせずに多要素認証を実行できるメリットがあります。

ADFSサーバーを利用した証明書ベースの多要素認証というと、
Active Directory証明書サービスを利用して、
エンタープライズCAをインストールして、
自動的に証明書をインストールして、

という一連の作業手順が定型化しており、しかもそれが唯一の方法であると信じていました。

しかし先日、お客さんと証明書を利用した多要素認証の実装方法について話をしていて、エンタープライズCAを使わないで多要素認証を実装したいとの要望を受け、改めて確認してみることにしました。

結論から先に言えば、

エンタープライズCA以外の認証局から発行した証明書でも多要素認証の証明書として活用することはできます。

では、実装方法を確認してみましょう。
(2016年5月31日追記 – 結構色々と不備があったので、修正箇所は全部赤を入れておきました。)

前提条件

ADFSサーバーによる証明書ベースの多要素認証の実装方法については、
過去に「ADFSによる多要素認証の設定」という投稿で紹介していますので、ご覧ください。

証明書の用意

エンタープライズCAで発行される証明書以外の証明書であれば何でもいいのですが、
私の環境では、次のような証明書発行要求を作成して、スタンドアロンCAで証明書を発行することにしました。
(スタンドアロンCAの作成方法などは割愛します)
まずは、以下のファイルをメモ帳で作成し、

[NewRequest]
Subject=”E=hamada@xxxx.adfs.jp,CN=hamada,CN=Users,DC=example,DC=com”
KeyUsage=0xa0

Exportable=FALSE
KeyLength=2048
MachineKeySet=FALSE
SMIME=FALSE
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.2
[Extensions]
2.5.29.17=”{text}”
_continue_ = “upn=hamada@xxxx.adfs.jp”

(OIDはクライアント認証を目的とした証明書を発行しなさい、という意味です。
あ、あと大事なことですが、E=…にはメールアドレス、CN=…の欄は利用ユーザーのDN、upn=…にはユーザーのUPNを入れてください)
発行要求テキストファイルができたら、コマンドプロンプトで

certreq -new 発行要求テキストファイル名 発行要求ファイル名

で発行要求ファイルを作成して、

image

スタンドアロンCAのWebサイトから発行要求ファイルの内容をコピペして、発行を要求します。
スタンドアロンCAで発行を許可して、

image

発行した証明書をクライアントコンピューターからスタンドアロンCAのWebサイトにアクセスして、[保存された要求証明書] をクリックしてインストールします。

image

これで証明書のインストールができました。
インストールされた証明書はcertmgr.mscツールから確認できます。

image

認証局とADFSサーバーの連携設定

続いて、ADFSサーバーの多要素認証に利用可能な認証局の設定を行います。
最初に認証局のルート証明書を用意しておきましょう。
スタンドアロンCAの場合、CAのWebサイトから[CA証明書、証明書チェーン、またはCRLのダウンロード]からダウンロードできます。

image

ダウンロードした証明書はroot.cerという名前で保存しておきます。
保存したファイルはADFSサーバーにコピーし、コマンドプロンプトから次のコマンドを実行します。

certutil –enterprise –addsotre “NTAuth” root.cer

実行すると、ルート証明書がADFSサーバーの証明書ストア内にあるNTAuthストアに格納されます。

image

その他、ルート証明書の情報はADFSサーバーと証明書認証を利用するクライアントコンピューターの[信頼されたルート証明機関]に入れておくことも忘れないように。

これで準備は完了です。
Office365のポータルサイトにアクセスすると、シングルサインオンで自動的に多要素認証画面に推移し、

image

さらに、ポータルサイトへ自動的に画面が推移します。

image

この方法が活用すれば、ドメイン参加していないPCにも証明書を利用した多要素認証が実装できるので、デバイス認証の代わりとしても利用できますね。

お試しあれ。

■2016年5月31日追記
証明書認証に失敗する方はCRLの設定をチェックしてください。
証明書認証時にはクライアントがCRLのチェックをするため、CRLが公開されていなかったりすると認証に失敗します。ご注意を。