ssl中间证书
中间证书,其实也叫中间CA(中间证书颁发机构,Intermediate certificate authority, Intermedia CA),对应的是根证书颁发机构(Root certificate authority ,Root CA)。为了验证证书是否可信,必须确保证书的颁发机构在设备的可信CA中。如果证书不是由可信CA签发,则会检查颁发这个CA证书的上层CA证书是否是可信CA,客户端将重复这个步骤,直到证明找到了可信CA(将允许建立可信连接)或者证明没有可信CA(将提示错误)。
为了构建信任链,每个证书都包括字段:“使用者”和“颁发者”。 中间CA将在这两个字段中显示不同的信息,显示设备如何获得下一个CA证书,重复检查是否是可信CA。
根证书,必然是一个自签名的证书,“使用者”和“颁发者”都是相同的,所以不会进一步向下检查,如果根CA不是可信CA,则将不允许建立可信连接,并提示错误。
例如:一个服务器证书 domain.com,是由Intermedia CA签发,而Intermedia CA的颁发者Root CA在WEB浏览器可信CA列表中,则证书的信任链如下:
证书 1 - 使用者:domain.com;颁发者:Intermedia CA
证书 2 - 使用者:Intermedia CA;颁发者: Root CA
证书 3 - 使用者:Root CA ; 办法和: Root CA
当Web浏览器验证到证书3:Root CA时,发现是一个可信CA,则完成验证,允许建立可信连接。当然有些情况下,Intermedia CA也在可信CA列表中,这个时候,就可以直接完成验证,建立可信连接。
为何需要中间证书
- 保护根证书。如果直接采用根证书签发证书,一旦发生根证书泄露,将造成极大的安全问题。所以目前根证书都要求离线保存,如果需要用根证书签名,则必须通过人手工方式,直接用根证书在线签发证书是不允许的。
- 区分不同类型的产品。针对DV,OV,EV等不同类型,不同安全级别的证书,CA会采用不同的根证书,一来便于区分,二来一旦出现问题,也便于区别处理,降低影响。中间CA证书一般都是支持在线签发证书的。
- 交叉验证。为了获得更好的兼容性,支持一些很古老的浏览器,有些根证书本身,也会被另外一个很古老的根证书签名,这样根据浏览器的版本,可能会看到三层或者是四层的证书链结构,如果能看到四层的证书链结构,则说明浏览器的版本很老,只能通过最早的根证书来识别。
要获得中间证书,一般有两种方式:第一种、由客户端自动下载中间证书;第二种、由服务器推送中间证书。以下分别讨论。
客户端自动下载中间证书
一张标准的证书,都会包含自己的颁发者名称,以及颁发者机构访问信息: Authority Info Access,其中就会有颁发者CA证书的下载地址。

通过这个URL,我们可以获得这个证书的颁发者证书,即中间证书。Windows、IOS、MAC都支持这种证书获取方式,但Android不支持这种方式,所以,如果我们仅依靠这种方式来获得中间证书,就无法在Android系统上建立可信连接。
除了操作系统支持外,还有一个很重要的因素,就是客户端可以正常访问公网。如果客户端本身在一个封闭的网络环境内,无法访问公网下载中间证书,就会造成失败,无法建立可信连接。
此外,有些CA的中间证书下载地址因为种种原因被“墙”掉了,也会造成我们无法获得中间证书,进而无法建立可信链接。
虽然自动下载中间证书的机制如此不靠谱,但在有些应用中,这却是唯一有效的机制,譬如邮件签名证书,由于我们发送邮件时,无法携带颁发邮件证书的中间证书,往往只能依靠客户端自己去下载中间证书,一旦这个中间证书的URL无法访问(被“墙”掉)就会造成验证失败。
服务器推送中间证书
服务器推送中间证书,就是将中间证书,预先部署在服务器上,服务器在发送证书的同时,将中间证书一起发给客户端。我们部署证书,首先就要找到颁发服务器证书的中间证书,可以用中间证书下载工具。
如果我们在服务器上不主动推送中间证书,可能会造成的问题
- Android手机无法自动下载中间证书,造成验证出错,提示证书不可信,无法建立可信连接。
- Java客户端无法自动下载中间证书,验证出错,可信连接失败。
- 内网电脑,在禁止公网的情况下,无法自动下载中间证书,验证出错,可信连接失败。
虽然我们不部署中间证书,在大多数情况,我们依然可以建立可信的HTTPS连接,但为了避免以上这些情况,我们必须在服务器上部署中间证书。
所以,为了确保我们在各种环境下都能建立可信的HTTPS连接,我们应该尽量做到以下几点:
1、必须在服务器上部署正确的中间证书,以确保各类浏览器都能获得完整的证书链,完成验证。
2、选择可靠的SSL服务商,有些小的CA机构,因为各种原因,造成他们的中间证书下载URL被禁止访问,即使我们在服务器上部署了中间证书,但也可能存在某种不可测的风险,这是我们应该尽力避免的。
3、中间证书往往定期会更新,所以在证书续费或者重新签发后,需要检查是否更换过中间证书。
ssl中间证书的更多相关文章
- SSL安全证书-概念解析
一.关于证书 数字证书是一种认证机制.简单点说,它代表了一种由权威机构颁发授权的安全标志. 由来 在以前,传统网站采用HTTP协议进行数据传输,所有的数据几乎都用的明文,很容易发生隐私泄露.为了解决安 ...
- 网站如何启用SSL安全证书?IIS7启用新建Https:/
网站使用SSL,通过SSL证书申请,然后导入之后.我们需要对网站进行设置才能正常使用SSL证书,具体如何操作让网站启用SSL呢,本经验以一个网站添加SSL主机头的方式为例来,网站启用SSL服务器安全证 ...
- [转]浅谈https\ssl\数字证书
浅谈https\ssl\数字证书 http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的 ...
- OpenSSL 与 SSL 数字证书概念贴
SSL/TLS 介绍见文章 SSL/TLS原理详解(http://seanlook.com/2015/01/07/tls-ssl). 如果你想快速自建CA然后签发数字证书,请移步 基于OpenSSL自 ...
- 去freessl.org申请免费ssl服务器证书
去freessl.org申请免费ssl服务器证书 来源: 本文链接 来自osnosn的博客 写于: 2019-03-30. 想搞个自签名证书,可以参考这篇: 用openssl为WEB服务器生成证书(自 ...
- docker项目ssl 安全证书的种种
一,证书挂着宿主的nginx上 这个很简单,只需要修改宿主nginx的配置文件即可 server { ssl default; server_name www.abc.com; #项目域名 ssl_c ...
- PHP 配置默认SSL CA证书
1.从CURL 官网下载CA 证书(当然也可以选择自己创建SSL CA证书,详情参考 https://blog.csdn.net/scuyxi/article/details/54898870 ,或自 ...
- 怎样用Java代码来把SSL的证书自己主动导入到Java的秘钥存储文件(keystore)
我们在开发或者使用SSL的过程中,非常多的软件须要我们提供java的keystore.特别是一些基于Java的中间件产品. 我们常规的做法是JDK自带的工具命令(keytool)去做.比方,以下的样例 ...
- 如何在AWS中为自己的S3托管站点添加SSL/TSL证书(https)
概要 利用AWS的S3服务托管静态网站后,如何将自己的域名与该站点绑定,并为此域名提供SSL/TSL证书(https). 面向人群 已经掌握如何利用S3服务托管静态网站. 已经拥有自己的域名. 希望为 ...
- 浅谈https\ssl\数字证书
全球可信的SSL数字证书申请:http://www.shuzizhengshu.com 在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕 ...
随机推荐
- MongoDB走过的坑(4.0.3版本)
数据存储一般使用本地或者存储在数据库,MongoDB是一个非关系型数据库,今天小结下走过的一些坑. 1.网上的很多教程对自己无效 解决方法:这种情况一般都是和版本有关系,数据库在不断的更新发展,很多东 ...
- POJ 1741 Tree (点分治)
Tree Time Limit: 1000MS Memory ...
- ZOJ 2112 Dynamic Rankings (动态第 K 大)(树状数组套主席树)
Dynamic Rankings Time Limit: 10 Seconds Memory Limit: 32768 KB The Company Dynamic Rankings has ...
- CentOS7安装bind域名服务
安装Bind Chroot DNS 服务器 yum install bind-chroot bind -y 拷贝bind相关文件,准备bind chroot 环境 cp -R /usr/share/d ...
- 软Raid5,LVM,3T大硬盘纠缠操作的问题
新服务器,4块3T大硬盘,软Raid5 组建 加上LVM分区各种一通操作... 悲催的是经过4天的软raid rebuild,最终状态给我FAIL了,当看到raid的state[ State : cl ...
- luogu P1855 榨取kkksc03
题目描述 以下皆为真实的故事. 洛谷2的团队功能是其他任何oj和工具难以达到的.借助洛谷强大的服务器资源,任何学校都可以在洛谷上零成本的搭建oj并高效率的完成训练计划. 为什么说是搭建oj呢?为什么高 ...
- [Codeforces 19E] Fiary
Brief Intro: 给定一个无向图,询问删去哪条边能使得剩下的图为一个二分图,输出所有结果 Algorithm: 关于二分图的重要性质:一个图为二分图的充要条件为其中没有奇环 1.如果没有奇环, ...
- [CF418E]Tricky Password
题意:有一个无限行$n$列的数表$a_{i,j}$,对于第$i\geq2$行,$a_{i,j}$为$a_{i-1,j}$在$a_{i-1,1\cdots j}$中出现的次数,要维护这个数表,支持修改第 ...
- redis系列文章
http://blog.csdn.net/liubenlong007/article/details/53690103
- Android 架构 1.架构
项目分为了四个层级:模型层.接口层.核心层.界面层.模型层定义了所有的模型:接口层封装了服务器提供的API:核心层处理所有业务逻辑:界面层就处理界面的展示.几个层级之间的关系如下图所示: 层级关系:模 ...