ADCS サブジェクトの別名付き証明書(SAN)有効化するレジストリ設定の利用時の注意

ADCS サブジェクトの別名付き証明書(SAN)有効化するレジストリ設定の利用時の注意があることを知ったので備忘録です。

 

 

まず、以下のブログでADCSでSANの証明書を発行できる状態について書かれており、実際にその通りの作業をしたところ、別名で証明書が発行できました。

 

「参考」

http://blog.livedoor.jp/nann_demo/tag/%E3%82%B5%E3%83%BC%E3%83%90%E8%A8%BC%E6%98%8E%E6%9B%B8

 

 

以下は確認方法と設定方法の抜粋です。

 

> certutil -getreg policy\EditFlags
を実行し、以下の行が存在したらサブジェクトの別名付き証明書が発行できる
EDITF_ATTRIBUTESUBJECTALTNAME2 -- 40000 (262144)
 
①有効化手順(Certsvcサービスの再起動が必要)
> certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
> net stop certsvc
> net start certsvc
 
②無効化手順(Certsvcサービスの再起動が必要)
> certutil -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
> net stop certsvc
> net start certsvc

 

そして、注意点がこちらに書かれています。

 

証明書でSANを許可するためのセキュリティのベストプラクティス
以下は、証明書でSANを許可するためのセキュリティのベストプラクティスです。
 
一般に、ユーザー定義のSANを使用すると、ユーザーが証明書要求で任意の名前を指定できるため、なりすまし攻撃のリスクが高まる可能性があります。ユーザー入力は悪意のある人によって悪用される可能性があるため、ユーザー定義のSANの使用に関連するリスクを軽減し、公開キー基盤(PKI)の整合性を保護するための予防措置を講じる必要があります。
 
SANを含む証明書要求は、証明書マネージャーが確認できるまで保留状態に保持する必要があります。証明書マネージャーの承認を必要とする証明書テンプレートの構成については、発行要件を参照してください。
 
保留中の証明書要求を確認し、要求者が要求されたサブジェクト名を使用する権限があることを確認するための管理手順を実装します。
 
SANで証明書を要求できる個人も証明書を発行できないように、職務分離と役割ベースの管理を実装します。役割ベース管理の実装を参照してください。
 
SANの使用を、Webサーバー証明書をインストールする管理者など、それを必要とする個人のみに制限します。証明書テンプレートのセキュリティの構成については、「証明書テンプレートに基づいて証明書を発行する」を参照してください。
 
エンタープライズCAでEDITF_ATTRIBUTESUBJECTALTNAME2を有効にしないでください。これを有効にすると、すべての証明書要求でユーザー定義のSANが許可されます。
 
可能な限り、要求属性の代わりに証明書拡張機能を使用してSANを指定し、EDITF_ATTRIBUTESUBJECTALTNAME2を有効にしないようにします。
EDITF_ATTRIBUTESUBJECTALTNAME2を有効にする必要がある場合は、SANで証明書のみを発行するスタンドアロンCAをPKIに追加することを検討してください。
 
エンタープライズCAでEDITF_ATTRIBUTESUBJECTALTNAME2を有効にするな」と書かれていますね。ただ、内部で使う分には有効にしてもいいような気がしますが。設定にはサービスの再起動が必要なので注意が必要です。その他、色々とやり方が書かれていますが、別途、検証してみたいと思います。

 

「参考」

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff625722(v=ws.10)?redirectedfrom=MSDN