内部CA签发SAN证书后额外DNS记录不显示问题排查
问题:RDS SAN证书申请后仅保留单个DNS条目排查
我们内部部署了RDS会话主机(由连接Broker前置,无网关),农场DNS名为farm.domain.local,每个会话主机IP都配置了该域名的A记录做轮询负载(目前仅一台测试机)。用户通过RDP访问farm.domain.local时会弹出“证书上的服务器名称不正确”的警告。
为解决这个问题,我在域成员服务器上向内部CA申请SAN证书:
- 主体名称(Subject name)设为
CN=servername - 备用名称(Alternative name)包含:
- DNS>sessionhost
- DNS>sessionhost.domain.local
- DNS>farm
- DNS>farm.domain.local
但证书签发后,仅显示单个Subject Alternative Name条目:DNS Name =servername.domain.local,多次尝试结果一致。请问为什么证书没有保留多个DNS条目?(忽略CNAME相关内容)
可能的原因及解决方法
1. 证书模板限制
内部CA的证书模板大概率没开启允许自定义SAN条目的权限,甚至强制用AD信息覆盖SAN内容:
- 登录CA服务器,打开
certtmpl.msc,找到你用的证书模板(比如默认的「计算机」模板),右键→属性 - 切换到扩展标签,选中「主题备用名称」点击「编辑」
- 确认勾选「在请求中提供」,而非「从Active Directory信息构建」(后者会自动用服务器的AD域名覆盖你手动填的SAN)
- 同时检查安全标签,确保申请证书的服务器账号有「注册」权限,模板没被限制SAN格式
2. 图形化申请向导的坑
用Windows图形化向导申请时,可能存在输入SAN后被自动忽略的情况,建议换命令行方式申请:
- 创建
request.inf配置文件,内容如下:[Version] Signature="$Windows NT$" [NewRequest] Subject = "CN=servername" 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=sessionhost&" _continue_ = "DNS=sessionhost.domain.local&" _continue_ = "DNS=farm&" _continue_ = "DNS=farm.domain.local" - 运行命令生成请求文件:
certreq -new request.inf request.req - 将
request.req提交给内部CA获取签发证书 - 导入证书:
certreq -accept certnew.cer
3. CA服务器的策略限制
部分企业CA会启用SAN条目过滤或强制从AD属性生成SAN:
- 登录CA服务器,打开
certsrv.msc,右键CA名称→属性→策略模块→点击「属性」 - 检查是否勾选「允许管理员更新证书属性」或「根据Active Directory信息构建主题备用名称」,有就取消(需要CA管理员权限)
- 另外确认CA没有限制SAN条目数量或格式的自定义策略
4. 证书查看工具的显示bug
有时候不是证书没SAN条目,只是Windows自带的图形化证书查看器显示不全:
- 用命令行
certutil -dump certfile.cer查看证书完整内容,确认SAN条目是否存在 - 如果命令行能看到多个条目,那只是图形化工具的显示问题,证书本身是正常的
内容的提问来源于stack exchange,提问作者qac
相关产品推荐
相关产品推荐

