概述:
PC1: DNS + IIS + AD, Win2012 R2标准版
PC2: AD证书服务, Win2012 R2标准版,
PC3: 智能卡(飞天ePass3000)登陆测试客户端.
1.PC1和PC2如果是克隆自同一个Win2012r2模板的虚拟机, PC2在加入AD时会提示系统ID与AD一样,导致无法加入域.
此时需要运行sysprep更新系统ID,如下图:
2. PC2要先加入AD,再安装AD证书服务.
3. PC2安装AD证书服务时要以AD管理员身份运行,如下图,输入AD域管理员的账号,再安装AD证书服务.
注意: 必须是AD域管理员的账号, PC2本机的管理员账号是不行滴.
4. PC1因为未安装AD证书服务,所以没有企业PKI 入口.导入第三方CA证书只能采用命令行方式:
certutil -dsPublish -f userca.cer NTAuthCA
gpupdate /force
查看PC2的企业PKI->管理AD容器,发现证书已经导入到 NTAuthCertificates里了.
但实际上,PC2是有企业PKI入口的, 在PC2上通过图形界面导入CA证书应该也是可以的. 但mmc要以域用户或域管理员权限运行,不能以本机账号权限运行.
注意: 证书此时有红叉,说明不受系统信任. 还需要把根证书和子CA证书导入相应的信任存储区才行.PC1和PC2都要导入.
5.此时PC1上会自动申请一个域控制器证书.
注意这个证书的有效期是一年. 可以考虑签发一个时间长一点的比如10年的域控制器证书替代他,省的将来证书更新麻烦.
(申请10年有效期域控证书后,客户端登陆报错. AD上手动申请一个KDC证书后,登陆正常. 原因暂时不清楚.)
6. 2018/9/26补充. 实现免KDC证书.
15:11 2018/9/26
第三方CA签发域控证书要求:
1.根CA的主题要符合CA名称,如: CN=CAname,DC=myad,DC=com (20180926补充确认: 不要求)
2.要有一个有效的CRL,可在DNS里添加A记录以解析crl中的域名.
3.包含证书模板名称:DomainController
4.包含使用者备用名称:DNS Name=ADname.myad.com (必须有,必须正确,否则导入到AD后,AD会自动删除这个证书!?)
5.最后得到的pfx,要通过openssl更换csp为:微软SChannel -LMK型 (openssl v1.0以上版本才支持?) (20180926补充确认: 不要求?!)
#!/bin/bash
pfx=dc_myca_1234.pfx
pfx_schannel=dc_myca_1234_schannel.p12
openssl pkcs12 -in $pfx -clcerts -nokeys -out cert.cer
openssl pkcs12 -in $pfx -nocerts -out cert.key -nodes
openssl pkcs12 -name "RSA SChannel DC Cert" -export -inkey cert.key -in cert.cer -out $pfx_schannel -CSP 'Microsoft RSA SChannel Cryptographic Provider' -LMK
5.CA的根证书和crl要导入AD和CA的相应存储区.
6.CA的根证书要导入到AD的组策略相应存储区
7.CA的根证书要导入NTAuthCA
certutil -dsPublish -f root.cer NTAuthCA
gpupdate /force
7. openssl签发AD域控证书方法(20181019补充)
CONFIG=/root/openssl/dc_cert/openssl_dc.cnf
openssl ca -config ${CONFIG} -days 3650 -extensions sign_adcert_csr -out dc_openssl.cer -in csr.pem
openssl.cnf:
增加:
[ sign_adcert_csr ]
#1.3.6.1.4.1.311.20.2 = BMP:DomainController
1.3.6.1.4.1.311.20.2 = DER:1E200044006F006D00610069006E0043006F006E00740072006F006C006C00650072
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
keyUsage = digitalSignature,keyEncipherment
extendedKeyUsage = clientAuth,serverAuth
subjectAltName = @ad_guid_dnsname
[ ad_guid_dnsname ]
#otherName=1.3.6.1.4.1.311.25.1;DER:b64f74d2fc4c40608b560e802a1fc50e
DNS=AD2012.cnooc.com.cn
8. 待补充.