用户要为多域名SSL证书(SAN证书)正确填写使用者可选名称(SAN)字段,关键是理解其“清单式覆盖”的逻辑。你需要在此字段中明确列出该证书需要保护的所有具体域名、子域或IP地址。下面详细说一下:
一,SAN字段的正确填写格式
填写SAN字段时,需遵循特定的前缀格式来声明名称类型。最常见和最重要的是DNS:前缀。
填写场景 在CSR配置文件中的正确格式 说明与示例
常规域名/子域 DNS:域名 保护具体的域名或子域。
例如:DNS:www.example.com, DNS:api.example.cn
通配符子域 DNS:*.子域 保护某一级下的所有动态子域。
例如:DNS:*.apps.example.com 能保护 shop.apps.example.com,但不能保护 prod.shop.apps.example.com。
IP地址 IP:IP地址 直接保护IP地址(如内网服务),但需注意IP无法像域名一样被常规验证。
电子邮件地址 EMAIL:邮箱地址 用于邮件签名等场景。
二,填写时的关键注意事项
不要重复填写通用名(CN):根据标准,证书颁发机构(CA)在签发时通常会自动将你CSR中的通用名(CN)复制到SAN字段中。因此,你只需在SAN列表中列出除CN之外的其他名称即可,避免重复。
区分多域名与通配符证书:标准的通配符证书(如*.example.com)本身不能额外添加其他主机名的SAN。而多域名证书的SAN字段则支持灵活混合添加具体域名和通配符条目。
遵循现代标准:现代TLS实践更依赖SAN字段而非CN字段进行主机名验证,一些客户端库已不再检查CN。因此,确保所有需要保护的名称都明确列在SAN中至关重要。
三,配置与生成示例
你可以通过修改OpenSSL的CSR配置文件来添加SAN字段。以下是一个配置示例,它包含了一个通用名(CN)和多个SAN条目:
openssl
[req]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = CN
stateOrProvinceName = Beijing
localityName = Beijing
organizationName = My Company
commonName = portal.example.com # 通用名
[v3_req]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names 指向SAN列表
[alt_names]
DNS.1 = portal.example.com 通常CA会自动从CN添加此项
DNS.2 = www.example.com 额外的具体域名
DNS.3 = api.example.com 额外的具体域名
DNS.4 = *.apps.example.com 通配符子域
IP.1 = 192.168.1.100 IP地址
使用此配置文件生成CSR的命令为:openssl req -new -key your.key -out your.csr -config this_config.cnf
四,申请与后续管理
提交申请:将生成的CSR文件提交给CA。在CA的订单页面,系统通常会解析出你在CSR中设置的SAN列表,请仔细核对。
验证域名控制权:对于SAN列表中的每一个全新域名,你都需要完成域名控制权验证(DCV),CA才会签发证书。
后续修改:证书签发后,无法直接修改SAN列表。如需增加或减少受保护域名,必须向CA重新提交(补发) 一个新的CSR来申请新证书,这可能会产生额外费用。
总结来说,填写多域名SSL证书的SAN字段,就是为需要保护的所有网络地址创建一个精确的“白名单”。务必在申请前仔细核对列表,并了解后续任何修改都需重新签发证书。
如果你有具体的域名保护需求(例如,需要包含哪几个主域、子域或IP),我们可以你规划一个更具体的SAN填写方案。