SSL SAN及其目的
SAN(Subject Alternative Name)是x509标准扩展的一种形式,允许用户在单个SSL证书中添加其他的主机名称。基本上,SAN扩展成了ssl证书扩展的标准样式,并且以其自己的样式替换common name的使用。
SAN以结构化的模式,突出所有的域名和IP地址,这些域名和IP地址都是需要证书保护的。通常由子域名和IP地址组成的短列表可以被认为是SAN。
背景
为了理解什么是SAN以及其出现的目的,首先需要理解x509规范的背景。x509是ssl证书格式,在早期的使用场景中,ssl证书进许可证书中subject(即common name)的单个主机名称。
common name基本上代表了ssl证书保护的主机名称。试图将证书用于不匹配common name的网站将导致安全错误,此错误定义为host name mismatch
错误。
关于common name的更多信息参考What is the SSL Certificate Common Name?
关于HTTPS的更多信息参考rfc2818
早期规范结束后,很明显的是在一个证书中覆盖多个host name是非常有用的。比如使用单个证书用于许可根域名和www
子域名。并且example.com
与www.example.com
使用同一个证书。
SAN证书中的Subject Alternative Name
SAN证书中的Subject Alternative Name用于在ssl证书中引用多个域名。事实上ssl证书包含的多个域名通常是使用SAN扩展完成的。
但要注意一个关键不同:multi-domain certificates
指的是一个ssl证书可以覆盖多个域名的能力;而SAN certificates
指的是通过SAN扩展包含了各种名称的一类证书。
从技术角度讲,当今签发的证书都是SAN certificates
。
SAN的目的
从实践和目的的角度说,‘SAN certificates’ 与 ‘multi-domain certificates’是一样的。二者都是在一个证书中指向多个域名。SAN证书通过标记为特定的类型来实现这一目的。
SAN限制
使用SAN扩展,你想覆盖的域名什么特殊限制,并且没有义务检查host name语义的正确性,详细信息参考RFC。但是CA可能对数量有限制,或者关于商业描述的格式限制,亦或者其他内部的规则或规定。
例如一个通用的准则是禁止任意的通配符名称作为SAN的host name。这表明一个事实,SAN证书通常支持特定名称的列表。
通常也会限制每个证书所有名称的数据,通常上限为100
但名称不要求在同一个域名下。一个证书以下面的方式包含下面的名称列表是可以的:
case.com
www.case.com
foo.ball.hello.com
other.domain.com
DNSimple delivers SAN SSL certificates on the basis of the issuance by Let’s Encrypt certification authority.
In terms of present platform restriction, all the names are required to be belonging to the same domain:
case.com
www.case.com
mail.case.com
foo.bar.case.com
Reference
- https://networkinterview.com/what-is-a-san-subject-alternative-name-and-its-purpose/
- https://support.dnsimple.com/articles/what-is-ssl-san/
- https://www.entrust.com/blog/2019/03/what-is-a-san-and-how-is-it-used/