2024年12月10日火曜日

EDITF_ATTRIBUTESUBJECTALTNAME2を有効化しないで、SAN属性ありの証明書を発行しましょう

従来、

といった記事で、EDITF_ATTRIBUTESUBJECTALTNAME2を有効化して、SAN属性ありの証明書を発行していました。が、

How to Request a Certificate With a Custom Subject Alternative Name

セキュリティで保護された LDAP 証明書にサブジェクトの別名を追加する から上記にリンク有ります。

という公式情報があるよと同僚から教えてもらいました。上記リンクから文面引用するとEDITF_ATTRIBUTESUBJECTALTNAME2を有効化するのはリスク有とのこと。。。

警告

Adding a SAN attribute to the RequestAttributes section of RequestPolicy.inf also requires that the CA is configured to accept SAN attributes by enabling EDITF_ATTRIBUTESUBJECTALTNAME2, which can put your PKI at risk for impersonation attacks.

Whenever possible, specify SAN information by using certificate extensions instead of request attributes to avoid enabling EDITF_ATTRIBUTESUBJECTALTNAME2.

Do not enable EDITF_ATTRIBUTESUBJECTALTNAME2 on an enterprise CA.

For more information about risks and mitigations, see Security best practices for allowing SANs in certificates.

じゃあ、どうするのということで、

How to Request a Certificate With a Custom Subject Alternative Name

を何度も読み返しました。結果、To create a RequestPolicy.inf file の内容を編集すればよいことに気づきました。上記文面でその該当箇所を太字で強調してみました。

To create a RequestPolicy.inf file の内容を抜粋すると、

[Extensions]
; If your client operating system is Windows Server 2008, Windows Server 2008 R2, Windows Vista, or Windows 7
; SANs can be included in the Extensions section by using the following text format. Note 2.5.29.17 is the OID for a SAN extension.
2.5.29.17 = "{text}"
_continue_ = "dns=www01.fabrikam.com&"
_continue_ = "dn=CN=www01,OU=Web Servers,DC=fabrikam,DC=com&"
_continue_ = "url=https://www.fabrikam.com&"
_continue_ = "ipaddress=172.31.10.134&"
_continue_ = "email=hazem@fabrikam.com&"
_continue_ = "upn=hazem@fabrikam.com&"
_continue_ = "guid=f7c3ac41-b8ce-4fb4-aa58-3d1dc0e36b39&"

この内容から、

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=www01.fabrikam.com"

だけにすればよい感じでした。実際に試した要求用テキストファイルは、下記の通りです。;がコメントアウトの箇所で、SAN属性はコメントアウトしました。

[NewRequest]
Subject = "CN=contosowac2.contoso.local"
Exportable = TRUE
KeyLength = 2048
KeySpec = 1
KeyUsage = 0xA0
MachineKeySet = True
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = CMC
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1
[Extensions]
;https://learn.microsoft.com/ja-jp/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff625722(v=ws.10)#security-best-practices-for-allowing-sans-in-certificates
; If your client operating system is Windows Server 2008, Windows Server 2008 R2, Windows Vista, or Windows 7
; SANs can be included in the Extensions section by using the following text format. Note 2.5.29.17 is the OID for a SAN extension.
2.5.29.17 = "{text}"
_continue_ = "dns=contosowac2.contoso.local"
[RequestAttributes]
;SAN="dns=contosowac2.contoso.local"
; ???Enterprise CA ?? 
CertificateTemplate = WebServer

証明書は、EDITF_ATTRIBUTESUBJECTALTNAME2を無効化した状態

certutil -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2 
net stop certsvc 
net start certsvc


で発行しました。問題無く、使用できました。

ここまで調べたり試したりしたところで、

AD CS で SAN (サブジェクトの別名) を追加するリスク

という記事があるのを知りました。ということで、EDITF_ATTRIBUTESUBJECTALTNAME2の有効化は今後止めていきたいですね。

0 件のコメント:

コメントを投稿