用户要为多域名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填写方案。