签发域控证书(通过OpenSSL工具)
操作场景
在AD场景下启基于证书的身份验证时,要求AD域具备有效的域控证书。该证书可由AD域上的AD CS服务提供,若未安装,亦可使用OpenSSL工具自行签发域控证书。
前提条件
- 准备一台本地Windows PC或ECS服务器,ECS服务器创建参考购买弹性云服务器章节。
- 已参考安装OpenSSl工具章节在本地Windows PC或购买的ECS服务器上安装OpenSSl工具。
- 生成证书吊销列表文件,参考 生成证书吊销列表文件。
- 已参考获取AD服务器ObjectGUID的值。
约束与限制
- 证书必须具有指向有效证书吊销列表(CRL)的CRL分发点扩展。
- 证书秘钥用法部分必须包含“数字签名”和“秘钥加密”。
- 证书增强型秘钥用户部分必须包含如下:
- 客户端身份验证(1.3.6.1.5.5.7.3.2)
- 服务端身份验证(1.3.6.1.5.5.7.3.1)
- 证书使用者可选名称部分必须包含域名系统(DNS)名称。 如果使用 SMTP 复制,证书使用者可选名称部分还必须包含目录中域控制器对象的全局唯一标识符(GUID)。 例如:其他名称:1.3.6.1.4.1.311.25.1 = ac 4b 29 06 aa d6 5d 4f a9 9c 4c bc b0 6a 65 d9 DNS Name=server1.northwindtraders.com
- 证书模板必须具有Basic Metabolic Panel(BMP),数据值DomainController的扩展。
- 域控制器证书必须安装在本地计算机的证书存储中。
操作步骤
使用OpenSSL生成CA证书
- 在本地Windows PC或ECS服务器上创建存放生成证书的相关文件,如:RootCA。
- 进入创建的RootCA目录,分别执行如下命令生成CA证书。
- 生成密钥:openssl genrsa -out ca.key 2048
- 生成证书请求文件:openssl req -new -key ca.key -out ca.csr
- 生成证书:openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
使用CA证书生成域控证书
- 在本地Windows PC或ECS服务器中创建“flower_domain.cnf”文件。
- 将以下内容拷贝至“flower_domain.cnf”文件中。
以下参数根据实际情况获取配置:
- CN:AD服务器的“计算机全名”(依次右键单击“此地脑 > 属性”,进行查看,如下图所示)。
- DC:AD服务器的域名(依次右键单击“此地脑 > 属性”,进行查看,如下图所示)。
- DNS.1:AD服务器的“计算机全名”(依次右键单击“此地脑 > 属性”,进行查看,如下图所示)。
- OCTETSTRING:获取AD服务器ObjectGUID的值,参考获取AD服务器ObjectGUID的值章节获取。
请确保使用的值中不包含任何空格。
- URI.1:证书吊销列表文件,参考生成证书吊销列表文件章节获取。
[ req ] distinguished_name = req_distinguished_name default_bits = 2048 prompt = no default_md = sha256 req_extensions = v3_req [ req_distinguished_name ] CN = WIN-HSDLL4RO8LJ.flower.com OU = Domain Controllers DC = flower [ v3_req ] basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = clientAuth, serverAuth subjectAltName = @alt_names 1.3.6.1.4.1.311.20.2 = ASN1:BMP:DomainController crlDistributionPoints = @crl_section [ template_sample ] filed1 = UTF8:some [ alt_names ] otherName.1 = 1.3.6.1.4.1.311.25.1;FORMAT:HEX,OCTETSTRING:DDB5053B5EDB014080ED528D4B34DB8B DNS.1 = WIN-HSDLL4RO8LJ.flower.com [ v3_ca ] basicConstraints = CA:TRUE, pathlen:0 keyUsage = critical, keyCertSign, cRLSign [ crl_section ] URI.1 = http://WIN-HSDLL4RO8LJ.flower.com/sc-root-ca.crl
- 在本地Windows PC或ECS服务器中按“win+r”,在弹出的运行对话框中输入“cmd”,按“Enter”,打开命令行窗口。
- 进入flower_domain_.cnf文件所在目录,执行以下命令。
示例:cd D:\Users\file(file为flower_domain.cnf文件所在目录)
- 将2中生成的ca.key和ca.crt文件拷贝至“flower_domain_.cnf”文件所在目录。
- 生成证书私钥,执行以下命令。
openssl genrsa -out flower_domain.key 2048
- 根据私钥和配置文件生成请求文件,执行以下命令。
openssl req -new -key flower_domain.key -config flower_domain.cnf -out flower_domain.csr
- 生成域控证书文件,执行以下命令。
openssl x509 -req -in flower_domain.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -extfile flower_domain.cnf -extensions v3_req -out flower_domain.crt
- (可选)证书和私钥合并生成域控证书,执行以下命令。
openssl pkcs12 -export -inkey flower_domain.key -in flower_domain.crt -certfile ca.crt -out flower_domain.pfx -password pass:密码
- 如上命令的密码请根据实际需求自定义。
- 此命令将证书与私钥合并为一个文件,建议保存该文件以备后续使用。
将生成的域控证书导入至AD服务器
- 使用账号密码登录至AD服务器中。
- 将8生成的域控证书(flower_domain.crt)拷贝至AD服务器中。
- 按“win + r”,在弹出的运行对话框中输入“cmd”,按“Enter”,打开命令行窗口。
- 进入域控证书目录,执行如下命令。
示例:cd D:\Users\file(file目录为域控证书所在目录)
- 在命令行窗口输入命令导入域控证书,执行如下命令。
certutil -enterprise -addstore NTAuth flower_domain.crt
- 通过账号密码登录AD服务器。
- 按“win + r”,在弹出的运行对话框中输入“dsa.msc”,按“Enter”,弹出“Active Directory 用户和计算机”页面。
- 打开Active Directory 用户和计算的高级功能,如图1所示。
- 展开AD服务器的域名,选择“Domain Controllers”域控制器。
- 在“Domain Controllers”域控制器右键单击选择“属性”,在弹出的属性页面查看“属性编辑器”页签,如图2所示。
- 在属性编辑器页签,下拉选择objectGUID属性目录,双击查看objectGUID的值,如图3所示。
安装OpenSSl工具
- 准备一台本地Windows PC或ECS服务器,ECS服务器创建参考购买弹性云服务器章节。
- OpenSSl官网下载地址:点此获取。
Windows 安装方法
OpenSSL 官网没有提供 Windows 版本的安装包,可以选择其他开源平台提供的工具。点此获取,以该工具为例:
- 选择32位或者64位合适的版本下载,示例:Win64OpenSSL_Light-3_5_0.exe。
- 在WindowsPC或ECS服务器中,双击安装包,勾选“I accept the agreement”,单击“Next”,如下图所示。

- 连续4次单击“Next”,单击“Install”,完成安装。
- 设置环境变量,例如,工具安装在C:\Program Files\OpenSSL-Win64目录,将C:\Program Files\OpenSSL-Win64\bin复制到用户变量或系统变量的Path中,如图4所示。
生成证书吊销列表文件
证书吊销列表 (Certificate Revocation List ,简称: CRL) :证书颁发机构 (CA)维护的数字签名文件,用于识别已吊销的证书。
- 在弹性云服务器中创建index.txt和crlnumber文件。
- 在弹性云服务器中创建 crl_v3.cnf文件,将以下内容拷贝至文件中。
以下参数请根据实际情况修改:
- dir:在2章节中创建的CA根证书和私钥的路径,请根据实际情况配置。
- certificate:选择2创建根CA证书。
- private_key:选择2章节生成的密钥文件。
[ ca ] default_ca = my_ca [ my_ca ] dir = D:/project/V14-CRL database = $dir/index.txt new_certs_dir = $dir/newcerts certificate = $dir/ca.crt private_key = $dir/ca.key serial = $dir/serial crlnumber = $dir/crlnumber crl = $dir/sc-root-ca.crl default_crl_days = 365 default_md = sha256 [ crl_ext ] authorityKeyIdentifier=keyid:always,issuer
- 按“win + r”,在弹出的运行框中输入“cmd”,按“Enter”,打开命令行窗口。
- 进入“crl_v3.cnf”文件所在目录,执行如下命令。
示例:cd D:\Users\file(file为crl_v3.cnf文件所在目录)
- 执行命令生成证书吊销列表文件。
openssl ca -gencrl -config crl_v3.cnf -out sc-root-ca.crl
sc-root-ca.crl即为生成的证书吊销列表文件






