首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAN和SNI SSL证书有什么区别?

SAN和SNI SSL证书有什么区别?
EN

Server Fault用户
提问于 2016-10-09 09:46:09
回答 4查看 32.3K关注 0票数 31

有人能用简化的方式解释一下这些证书之间的区别吗?我读了一些文章,但听起来他们做同样的工作,即用一个证书加密多个域。

EN

回答 4

Server Fault用户

回答已采纳

发布于 2016-10-09 11:53:27

SAN (Subject Alternative Name)是X 509证书规范的一部分,其中证书有一个字段,其中包含对主题也有效的替代名称列表(除了单个公共名称/ CN)。此字段和通配符名称本质上是对多个名称使用一个证书的两种方法。

SNI (服务器名称指示)是一种类似于header的TLS协议扩展协议。当客户端发送此信息时,它允许服务器选择向客户端提供的适当证书,而无需在服务器端使用单独的IP地址(就像HTTP主机报头被大量用于普通HTTP一样)。

请注意,SNI并不反映在证书中,它实际上实现了与问题所要求的完全相反的功能;它简化了拥有多个证书,而不是在许多事情上使用一个证书。

另一方面,这在很大程度上取决于哪一条道路实际上更可取。例如,如果您需要不同实体的证书,那么这个问题所要求的几乎肯定不是您真正想要的。

票数 46
EN

Server Fault用户

发布于 2016-10-09 10:55:35

SAN代表Subject Alternative Name,它是一个x509证书属性,SNI是SSL/TLS客户端可以支持的特性,因此是一个完全不同的实体。

使用SAN证书,即使客户端不支持SNI,您也可以在一个IP地址上托管多个启用HTTPS的站点。在这种情况下,您为所有站点持有一个证书,该证书必须包含所有站点名称( Apache坐标中的ServerNameS或ServerAliases,或Nginx中的server_name ),因为它是SANs。这是遗留方法的子集,它确实扩展了“在每个单独的IP地址上启用了一个HTTPS的站点”。目前,只有大型CDN使用SAN。

使用SNI,您还可以在一个IP上承载多个启用HTTPS的站点,您可以为每个站点持有一个单独的x509证书,这两种证书都不会在其SAN属性中提及其他站点名称,但TLS客户端(即浏览器和控制台客户端(如wgetcurl) )必须支持SNI。这是一种现代的方法,因为上次不支持SNI的操作系统是Windows和IE6.x,如果我没记错的话。现在,如果购买通配符证书,就可以看到SAN属性--例如,用于*.example.com的证书将包含公共名称*.example.com和SAN of example.com

票数 21
EN

Server Fault用户

发布于 2016-10-09 10:15:52

这混合了证书处理的两个部分。

SAN是一个主题替代名称。这是一种为多个域创建一个证书的方法。您只需将您想要的证书添加到证书中的SAN字段。然后浏览器也将接受这些域的有效性。

SNI是服务器名称指示,是TLS的一部分。它允许您在一个IP上托管多个启用TLS的站点,因为所需的服务器名称是通过TLS握手发送的,并且服务器可以为答案选择正确的证书。

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/807959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档