VPN ゲートウェイとクライアントの役割に向けた AD CS テンプレート設計
単一のテンプレートが多数の ID を発行できるのは、相手側の役割に合致する場合だけです。役割ごとに目的と名前のソースを決め、CA で公開し、まずパイロットを一台登録します。
エンタープライズ CA は、VPN が必要とするあらゆる証明書を、自らがゲートウェイになることなく発行できます。設計の仕事は、各相手が何を証明すべきか、そしてどのテンプレートがまさにそれを証明する資格情報を発行できるかを決めることです。私は役割表から始め、既存のテンプレートをその場で編集するのではなく複製し、役割ごとにサブジェクトのソースを固定し、結果を発行元 CA で公開し、誰かが自動化する前にパイロットを一台登録します。以下の各手順は、正常に動く CA がそれでも VPN に拒否される証明書を作ってしまう箇所です。
テンプレートコンソールを開く前に役割表を書く
二つの役割、二つの目的。ゲートウェイはサービスの ID を証明するため、その証明書には Server Authentication (1.3.6.1.5.5.7.3.1)、デジタル署名と鍵暗号化の鍵使用法、そしてクライアントが接続するホスト名をサブジェクトの代替名に含める必要があります。証明書で認証するクライアントには Client Authentication (1.3.6.1.5.5.7.3.2) と、ゲートウェイが相手確認で期待する ID に一致する識別情報が必要です。ユーザー証明書とコンピューター証明書は、別のストアに存在し別のプロセスが使うため、相互に置き換えられません。
役割ごとに四つの列を書きます。現れるべき ID、目的、鍵の利用者、そして 鍵がマシンの外に出てよいか です。この表が後で各チェックボックスを決め、レビュー担当者に渡すのもこの表です。パスワードによるクライアント認証は別の分岐です。ゲートウェイが資格情報でユーザーを認証するなら、クライアント証明書の配布は証明を増やさず作業だけを増やします。
共有テンプレートを編集するのではなく複製する
目的がほぼ正しいテンプレートから始めます。たとえばゲートウェイには RAS and IAS Server、ドメイン参加デバイスには Computer を使い、それを複製して、用途を表す名前をコピーに付けます。他のサービスがすでに使っているテンプレートを広げることは、六週間後に無関係な何かを壊す変更です。コピーでは、アプリケーション ポリシーを役割表の目的に設定し、鍵使用法をそれと整合させ、ゲートウェイが受け入れる鍵アルゴリズムと長さを選び、アプライアンスが移設のためにエクスポートする必要がない限り秘密鍵をエクスポート不可にします。
有効期間と更新もテンプレートに属します。短い有効期間は失効させやすく運用が難しくなり、長い有効期間は登録作業を減らす代わりに漏えいした鍵の露出を長引かせます。説明できる数値を選び、CA 自身の有効期間とテンプレートの更新期間が結果を短くしうることに注意してください。
サブジェクトの出どころを決める
ドメインのコンピューターやユーザーでは、要求者が名前を入力できないよう、ディレクトリ情報からサブジェクトを構築します。ドメインに参加していないゲートウェイや、ID が AD の外で割り当てられるデバイスでは、代わりに制御された要求経路がテンプレートに必要です。要求者が指定するサブジェクトと代替名を有効にすることは実際の判断です。すべての登録者が任意の名前を主張できるライセンスではなく、誰が要求でき何の証拠が必要かを CA 側のポリシーが引き続き定めます。
Windows IKEv2 はここで厳格です。ゲートウェイ証明書はクライアントが構成した名前と照合されるため、DNS 名はクライアントが探す場所、通常はサブジェクトの代替名の dNSName エントリに存在しなければなりません。一致しない証明書を動かすために名前チェックや目的チェックを切ることは、本番で不一致を捕まえたはずのチェックを取り除くことになります。
テンプレートを公開し、その後でアクセス許可を絞る
AD DS でテンプレート オブジェクトを作ることと、発行元 CA で公開することは別の操作で、別のコンソールから行います。Certification Authority コンソールの Certificate Templates でコピーを公開し、その後コマンド ラインから CA がそれを提供していることを確認します。
certutil -CATemplates
certutil -TCAInfo
次はアクセス許可です。要求すべきグループに Read と Enroll だけを与え、それ以上は与えず、CA 自身の読み取りアクセスはそのまま保ち、Autoenroll は自動登録が意図され、それを機能させる展開ポリシーに裏付けられている場合にだけ与えます。テンプレートのチェックボックスはそれ自体では何も登録せず、登録許可のない公開済みテンプレートは、証明書を一覧に出したうえで要求を拒否するポータルを生みます。
実際の利用者でパイロットを一台登録する
証明書はそれを使うコンテキストで要求し、ファイル名を信じるのではなく返ってきた内容を検査します。ユーザー証明書は現在のユーザーのストアに、コンピューター証明書はローカル コンピューターのストアに入り、MMC は両方を表示します。だからこそ「成功した」登録が VPN サービスからは見えないことがあります。
certlm.msc
certutil -dump vpn-gateway.cer
ダンプでサブジェクト、代替名、拡張鍵使用法、チェーンを読みます。Windows 以外のゲートウェイでは、ドメインの自動登録が届くと仮定せず、サポートされたワークフローで要求を送信し、エクスポート形式が利用者側で対応する秘密鍵とともにインポートできるものであることを確認します。最後に、信頼と承認は分けておきます。VPN は誰がどのリソースに到達するかを引き続き決める必要があり、失効はゲートウェイが失効を確認する場合にだけアクセスを奪います。Microsoft の証明書テンプレート管理ガイド は、テンプレート コンソール、アクセス許可、公開という別個の手順を扱っています。