浏览器中导致SSL证书不被信任的原因有:1、SSL证书不是来自公认的证书颁发机构,导致SSL证书不被信任;2、数字证书信任链配置错误,就会被标记为不受信任;3、SSL证书的域名匹配程度不完整,会提示该证书不是这个域名的;4、SSL证书已经过了有效期,导致SSL证书不被信任;5、客户端不支持SNI协议,导致SSL证书不被信任。
具体内容如下:
SSL证书不是来自公认的证书颁发机构(CA)
了解过SSL证书的朋友都明白,我们自己就可以给自己颁发数字证书(SSL证书、邮件证书、客户端证书、代码证书等),自己签发的证书不需要一分钱。然而自签发的数字证书默认是不受到客户端操作系统信任的,所以他们访问我们的站点的时候就会提示不信任。另一方面,公认的证书颁发机构的CA证书就是默认内置在我们的操作系统或者浏览器当中的,也就是客户端操作系统默认信任的证书。所以,我们首先需要购买可信的证书颁发机构颁发的数字证书,这一点很重要。常见的公认数字证书颁发机构有Startcom、Comodo、Geotrust、Globalsign等。
数字证书信任链配置错误
我们接触了很久的数字证书,基本很少有颁发机构会使用他们的根证书直接签发客户端证书(End User Certificate), 这可能是出于安全考虑,当然也不排除部分证书颁发机构支持这样做(但是价格很惊人),他们都选择用自己的二级证书进行颁发客户端证书。如果不配置中级CA,操作系统就无法确定SSL证书的真正颁发者是谁。这个时候我们的证书和被受到信任的根证书就存在一个中间证书,这个叫中级证书颁发机构CA。如果操作系统默认只内置了根证书颁发机构,而我们直接安装的是自己的域名证书。这个时候证书链就不完整,就会被标记为受信任。为了解决这个问题,我们需要在服务器配置安装SSL证书的时候也同样要使得我们的证书链完整,才能正常使用。
证书的域名匹配程度不完整
多数情况下我们的证书颁发机构都会为我们的域名做完整的匹配,但有些时候某些证书颁发机构可能会疏忽,我就遇见过。当我们为自己的域名比如londry.cn申请数字证书的时候,我们的CSR当中仅定义了londry.cn这一个顶级域名,并未添加更多域名DNS(可叫证书备用名称)记录。那么当你证书颁发的时候访问www.londry.cn就不会受到信任,会提示你该证书不是这个域名的。这个时候你应该联系证书颁发机构或证书提供商进行重新签发并包含该域名,默认情况下的单域名证书是同时包含www.londry.cn和londry.cn的。
证书已经过了有效期
如果你的证书不是新买的,你应该注意你的数字证书已经过了有效期或这靠近有效期截止日期,你应该联系提供商进行续费。另外如果你的证书来自某些不正常的渠道,你也应该要确定一下你的证书是否已经被吊销,任何情况你都应该立即联系你的证书服务提供商。
客户端不支持SNI协议
这种事情只会发生在客户使用的操作系统是WindowsXPSP2以下,Android4.2以下的情况,因为这些操作系统实在是太早了。当时系统厂商并未有支持这个SNI协议。SNI协议就是让多个支持SSL证书的域名共享同一个独立IP地址的技术,现在已经被几乎所有主流操作系统和浏览器支持了。在很多年以前,SSL证书是需要绑定到独立IP地址使用的,由于IPv4地址池的逐渐不够分配,SNI技术应运而生了。