更新时间:2025-11-11 GMT+08:00
分享

签发域控证书(通过OpenSSL工具)

操作场景

在AD场景下启基于证书的身份验证时,要求AD域具备有效的域控证书。该证书可由AD域上的AD CS服务提供,若未安装,亦可使用OpenSSL工具自行签发域控证书。

前提条件

约束与限制

  • 证书必须具有指向有效证书吊销列表(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证书

  1. 在本地Windows PC或ECS服务器上创建存放生成证书的相关文件,如:RootCA
  2. 进入创建的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证书生成域控证书

  1. 在本地Windows PC或ECS服务器中创建“flower_domain.cnf”文件。
  2. 将以下内容拷贝至“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

  3. 在本地Windows PC或ECS服务器中按“win+r”,在弹出的运行对话框中输入“cmd”,按“Enter”,打开命令行窗口。
  4. 进入flower_domain_.cnf文件所在目录,执行以下命令。

    示例:cd D:\Users\file(file为flower_domain.cnf文件所在目录)

  5. 2中生成的ca.keyca.crt文件拷贝至“flower_domain_.cnf”文件所在目录。
  6. 生成证书私钥,执行以下命令。

    openssl genrsa -out flower_domain.key 2048

  7. 根据私钥和配置文件生成请求文件,执行以下命令。

    openssl req -new -key flower_domain.key -config flower_domain.cnf -out flower_domain.csr

  8. 生成域控证书文件,执行以下命令。

    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

  9. (可选)证书和私钥合并生成域控证书,执行以下命令。

    openssl pkcs12 -export -inkey flower_domain.key -in flower_domain.crt -certfile ca.crt -out flower_domain.pfx -password pass:密码

    • 如上命令的密码请根据实际需求自定义。
    • 此命令将证书与私钥合并为一个文件,建议保存该文件以备后续使用。

将生成的域控证书导入至AD服务器

  1. 使用账号密码登录至AD服务器中。
  2. 8生成的域控证书(flower_domain.crt)拷贝至AD服务器中。
  3. 按“win + r”,在弹出的运行对话框中输入“cmd”,按“Enter”,打开命令行窗口。
  4. 进入域控证书目录,执行如下命令。

    示例:cd D:\Users\file(file目录为域控证书所在目录)

  5. 在命令行窗口输入命令导入域控证书,执行如下命令。

    certutil -enterprise -addstore NTAuth flower_domain.crt

获取AD服务器ObjectGUID的值

通过OpenSSL签发CA证书前,需预先获取AD服务器的ObjectGUID值以供命令行使用。

  1. 通过账号密码登录AD服务器。
  2. 按“win + r”,在弹出的运行对话框中输入“dsa.msc”,按“Enter”,弹出“Active Directory 用户和计算机”页面。
  3. 打开Active Directory 用户和计算的高级功能,如图1所示。

    图1 高级功能

  4. 展开AD服务器的域名,选择“Domain Controllers”域控制器。
  5. 在“Domain Controllers”域控制器右键单击选择“属性”,在弹出的属性页面查看“属性编辑器”页签,如图2所示。

    图2 查看属性编辑器

  6. 在属性编辑器页签,下拉选择objectGUID属性目录,双击查看objectGUID的值,如图3所示。

    图3 ObjectGUID的值

安装OpenSSl工具

Windows 安装方法

OpenSSL 官网没有提供 Windows 版本的安装包,可以选择其他开源平台提供的工具。点此获取,以该工具为例:

  1. 选择32位或者64位合适的版本下载,示例:Win64OpenSSL_Light-3_5_0.exe
  2. 在WindowsPC或ECS服务器中,双击安装包,勾选“I accept the agreement”,单击“Next”,如下图所示。

  3. 连续4次单击“Next”,单击“Install”,完成安装。
  4. 设置环境变量,例如,工具安装在C:\Program Files\OpenSSL-Win64目录,将C:\Program Files\OpenSSL-Win64\bin复制到用户变量或系统变量的Path中,如图4所示。

    图4 配置环境变量

生成证书吊销列表文件

证书吊销列表 (Certificate Revocation List ,简称: CRL) :证书颁发机构 (CA)维护的数字签名文件,用于识别已吊销的证书。

  1. 在弹性云服务器中创建index.txt和crlnumber文件。
  2. 在弹性云服务器中创建 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

  3. 按“win + r”,在弹出的运行框中输入“cmd”,按“Enter”,打开命令行窗口。
  4. 进入“crl_v3.cnf”文件所在目录,执行如下命令。

    示例:cd D:\Users\file(file为crl_v3.cnf文件所在目录)

  5. 执行命令生成证书吊销列表文件。

    openssl ca -gencrl -config crl_v3.cnf -out sc-root-ca.crl

    sc-root-ca.crl即为生成的证书吊销列表文件

相关文档