事象
Active Directory 証明書サービスで構築した CA サーバーで、CSR に指定した項目がサブジェクト名に含まれないことがあります。
CSR の定義ファイル(inf)の内容:
[NewRequest]
Subject = “CN=sv01;OU=Human Resource;O=Nekomaru JP, Inc.;Street=Cat Street;L=Shibuya;S=Tokyo;C=JP”
Exportable = TRUE
KeyLength = 2048
KeySpec = 1
KeyUsage = 0xf0
MachineKeySet = TRUE
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1
OID=1.3.6.1.5.5.7.3.2
[RequestAttributes]
CertificateTemplate = “WebServer”
発行された証明書
※ サブジェクト名を見てみると、Street の項目が含まれていません。
原因
Active Directory 証明書サービスでは、サブジェクト名に含めることができる項目は以下です。
- EMail (E)
- CommonName (CN)
- OrganizationalUnit (OU)
- Organization (O)
- Locality (L)
- State (S)
- DomainComponent (DC)
- Country (C)
上記の項目以外を指定してサブジェクト名を指定しても、発行された証明書のサブジェクト名に含めることはできません。
対処策
サブジェクト名に含めることができる項目は、以下のレジストリにて設定されています。
値:SubjectTemplate
型:REG_MULTI_SZ
設定値:(項目一覧)
1) CA サーバーに管理者権限をもつユーザーでログオンします。
C:\>certutil -setreg ca\SubjectTemplate +STREET
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\test01-TEST01DC01-CA\SubjectTemplate:
古い値:
SubjectTemplate REG_MULTI_SZ =
0: EMail
1: CommonName
2: OrganizationalUnit
3: Organization
4: Locality
5: State
6: DomainComponent
7: Country
新しい値:
SubjectTemplate REG_MULTI_SZ =
0: EMail
1: CommonName
2: OrganizationalUnit
3: Organization
4: Locality
5: State
6: DomainComponent
7: Country
8: STREET
CertUtil: -setreg コマンドは正常に完了しました。
変更を有効にするには、CertSvc サービスを再起動しなければなりません。
4) 設定の変更を反映させるためには、Active Directory 証明書サービスの再起動が必要です。
以下のコマンドを実行して、Active Directory 証明書サービスを再起動します。
net stop certsvc && net start certsvc
設定変更した後は、発行した証明書に正常に STREET の項目が含まれます。
補足:SubjectTemplate について
レジストリ SubjectTemplate は、サブジェクト名のテンプレートを定義できます。
サブジェクト名に含める項目、また各項目の順序を指定します。
CA サーバーで発行される証明書のサブジェクト名は、SubjectTemplate で指定する定義に従います。
例えば、CSR の定義フィルにて以下の通りに設定したとしても、
C:\>certutil -getreg ca\SubjectTemplate
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\test01-TEST01DC01-CA\SubjectTemplate:
SubjectTemplate REG_MULTI_SZ =
0: EMail
1: CommonName
2: OrganizationalUnit
3: Organization
4: Locality
5: State
6: DomainComponent
7: Country
8: STREET
CertUtil: -getreg コマンドは正常に完了しました。
そのため、サブジェクト名の項目の番号を変更したい場合、以下の通りにレジストリ値を設定してください。
C:\>certutil -getreg ca\subjecttemplate
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\test01-TEST01DC01-CA\SubjectTemplate:
SubjectTemplate REG_MULTI_SZ =
0: EMail
1: CommonName
2: OrganizationalUnit
3: Organization
4: Street
5: Locality
6: State
7: DomainComponent
8: Country
CertUtil: -getreg コマンドは正常に完了しました。
また、SubjectTemplate の設定できる項目名は以下の通りです。
|
定義名 |
項目名 |
共通名 |
CommonName |
CN |
国 |
Country |
C |
ドメイン コンポーネント |
DomainComponent |
DC |
電子メール |
|
E |
名 |
GivenName |
G |
イニシャル |
Initials |
I |
地域 |
Locality |
L |
組織 |
Organization |
O |
組織単位 |
OrganizationalUnit |
OU |
都道府県 |
State |
S |
番地 |
Street |
STREET |
姓 |
SurName |
SN |
役職 |
Title |
T |
SubjectTemplate の設定値には “定義名” を指定してください。
定義できない文字列を指定すると、Actvie Directory サービスが起動できなくなる可能性があります。