You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于SSL/TLS证书客户端认证用途要求及AD CA中添加该用途的技术咨询

SSL/TLS证书客户端认证用途要求及AD CA中添加该用途的技术咨询

先直接回应你的核心疑问:缺失客户端认证OID不是浏览器不信任证书的原因

你观察到的细节很准确——像gmail.com、google.com这类完全可信的服务器证书,确实只包含TLS WWW Server Authentication(OID 1.3.6.1.5.5.7.3.1),没有客户端认证OID,但依然被所有浏览器信任。

浏览器抛出NET::ERR_CERT_COMMON_NAME_INVALID错误,和客户端认证用途几乎无关,更可能的原因是:

  • 证书的通用名称(CN) 和你实际访问的域名不匹配
  • 证书未包含主题备用名称(SAN) 字段(现在主流浏览器强制要求SAN必须明确列出访问域名,即使CN匹配也无法替代)
  • 你的本地根CA证书没有被导入到浏览器的「受信任的根证书颁发机构」存储中(自签名证书能工作是因为你手动信任了它,但CA签发的证书需要整个信任链被客户端认可)

如果你确实需要添加客户端认证OID(比如有双向认证场景),可以从这两个环节操作:

1. 在生成CSR时指定扩展密钥用途

不同工具的配置方式略有区别:

  • OpenSSL:
    编辑openssl.cnf配置文件,在[req]段添加:

    extendedKeyUsage = serverAuth,clientAuth
    

    或者生成CSR时直接通过参数指定扩展:

    openssl req -new -key your-private-key.key -out your-csr.csr -config openssl.cnf -extensions v3_req
    

    确保v3_req段包含上述extendedKeyUsage配置。

  • Windows Certreq工具:
    创建一个.inf配置文件,加入以下内容:

    [Version]
    Signature="$Windows NT$"
    
    [NewRequest]
    Subject = "CN=your-domain.com"
    KeySpec = 1
    KeyLength = 2048
    Exportable = TRUE
    MachineKeySet = TRUE
    SMIME = FALSE
    PrivateKeyArchive = FALSE
    UserProtected = FALSE
    UseExistingKeySet = FALSE
    ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
    ProviderType = 12
    RequestType = PKCS10
    KeyUsage = 0xA0
    
    [Extensions]
    2.5.29.17 = "{text}"
    _continue_ = "DNS=your-domain.com&"
    _continue_ = "DNS=www.your-domain.com"
    ExtendedKeyUsage = "1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2"
    

    然后运行命令生成CSR:

    certreq -new your-config.inf your-csr.csr
    

2. 在AD CA中配置证书模板以包含客户端认证用途

如果希望AD CA签发的证书默认携带客户端认证用途,需要修改对应的证书模板:

  • 打开「证书颁发机构」控制台,展开你的CA服务器,右键点击「证书模板」→「管理」
  • 在证书模板控制台中,找到你正在使用的模板(比如默认的「Web服务器」模板),右键→「属性」
  • 切换到「扩展」选项卡,选择「增强型密钥使用」,点击「编辑」
  • 在弹出窗口中点击「添加」,选择「客户端身份验证」(对应OID 1.3.6.1.5.5.7.3.2),确认保存
  • 回到「证书颁发机构」控制台,右键「证书模板」→「新建」→「要颁发的证书模板」,选择你修改后的模板完成发布
  • 后续用该模板申请的证书就会同时包含服务器和客户端认证用途

针对你的证书信任问题的额外排查建议

既然自签名证书能正常工作,说明IIS配置和绑定没问题,重点排查这几点:

  1. 确认客户端浏览器/设备已将本地根CA证书导入到「受信任的根证书颁发机构」存储(Windows可通过certmgr.msc操作,Chrome/Firefox有各自的证书管理界面)
  2. 检查CA签发的证书是否包含主题备用名称(SAN),且SAN内的域名和你访问的域名完全一致(比如访问https://intranet.yourcompany.com,SAN里必须明确列出这个域名)
  3. 验证证书链完整性:在浏览器中查看证书详情,确认从服务器证书到根CA的整个链都显示为「已信任」

备注:内容来源于stack exchange,提问作者kindzmarauli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:38:12