【前言】

说一下大背景吧,我们的一个后台服务需要部署在一个没法上外网的环境,但是我们的后台服务需要访问七牛云进行对象存储,于是乎,需要一个代理来完成这个访问,我门采用nginx七层来做这个代理,因为七牛访问是https,那么必然就需要自签证书咯。然后就开始吭哧吭哧造自签证书(具体签发过程请移步这里:基于OpenSSL的CA建立及证书签发)。

造完根证书以及中间证书后,问题就来了,我在代理和后台服务放置的都是中间证书,于是乎就一直报错无法验证证书。说来真是惭愧,起初我一直自以为是的认为是代码的问题,虽然看后台服务日志确实有个报错,但是在浏览器访问的时候返回的信息是证书验证不通过。我一直和开发同学强调大概率是他们代码错误,最后在他们团队leader耐心的和我一起进行调试后,发现我应该把签发的根证书放到后台服务所在机器,我们的后台服务需要读取(用携带一词或许更合适一点)这个根证书去和代理进行交互。

总的来说,就是后台服务就好比我们的浏览器,我们通过浏览器去访问某个https的网站,浏览器本身是内置了对应的根证书的,那么你想想,我们的后台服务是不是也应该要内置这些对应的根证书呢?是不是突然就犹如醍醐灌顶,茅塞顿开了。之后我把自签的根证书替换到后台服务后,问题果然得到解决。

复盘整个过程,仔细回味一下,为什么后台服务需要携带这个根证书去和代理端进行交互验证呢?换句话说,为什么浏览器需要内置根证书去验证要访问的https呢?那么SSL证书是什么?CA中间根证书是什么?CA根证书又是什么东西呢?请听我细细道来.......

【SSL证书】

百度曰:SSL证书是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能的证书

这些是我个人的相关理解

对HTTPS的思考之HTTPS如何做到数据传输安全的呢?

HTTPS建立连接详细过程

其实我个人感觉人们常常是将SSL证书称之为CA证书,也有称之为server证书的,说到底就是CA中心签发的一个可信的证书。

【CA中间证书是什么】

中间二字早已表明它的身份,它是介于SSL证书和CA根证书中间的一个东西。试想一下,如果用CA根证书直接签发SSL证书,如果发生了错误,或者说要取消掉root,那么用这个根证书签名的所有证书都将变为不可信。所以,根证书用自己的私钥对中间证书进行签名,这个时候中间证书变为可信证书了。中间根又可以给另一个中间根进行签名,这个被中间根签名的新中间根同样可以用来签署SSL证书。

【CA根证书到底是什么】

百度曰:根证书是未被签名的公钥证书或自签名的证书

我们来了解下浏览器是如何来信任一个https网站的TLS证书的。首先我们要知道,证书(后文称之为证书A)中的内容有用户的信息、公钥以及CA中心的签名。那么问题来了,我们如何确定这个CA组织的签名是否可信呢?显然需要用到这个CA中心的公钥,那么这个公钥又要从哪里获取呢?当然是从包含有CA中心公钥的那份证书(后文称之为证书B)中获取。下载了证书B后,问题又来了,如何验证证书B又是可信的呢?于是又要用签发证书B的证书C来验证这个证书B是可信的。

这个时候你会发现,这似乎是一个死循环,一层层嵌套,人们还给它取了一个有趣的名字:证书链。或许你会想,都死循环了,那还玩犊子啊。显然不是这样,证书链是有终结的,你想啊,如果我不用别人给我签名的证书,我自己给自己签名,那么是不是就不需要上一层证书的验证呢?对的,这个证书链的顶端就是这么个自己给自己签名的证书,称之为根证书,俗称自签证书。当年拥有了这个根证书(这里我称之为一级证书),就表明你会信任它签发的所有证书(这里我称之为二级证书),当然也会信任被二级证书签发的三级证书、被三级证书签发的四级证书......是不是突然想起一句古文“子又生孙,孙又生子;子又有子,子又有孙”,从这个一层层签发来看,确实是这么回事。

一句话总结,根证书是CA中心给自己签名的证书,是证书链的起点,安装根证书,就是信任此CA中心。

SSL数字证书之CA根证书、CA中间证书和SSL证书相关推荐

  1. SSL数字证书(一)CA、根证书与数字证书

    数字证书原理(〇)认识SSL SSL数字证书(一)CA.根证书与数字证书 SSL数字证书(二)使用makecert.exe签发证书 SSL数字证书(三)使用 openssl 生成证书 网络安全无疑是现 ...

  2. 什么是SSL数字证书,有哪些知名的CA颁发机构?

    CA证书,这是一种很笼统的说法,CA两字母代表 Certificate Authority,就是证书授权中心的意思,也就是证书颁发机构可以简称为"CA",那么"CA证书& ...

  3. 生成CA根证书、公钥、私钥指令(数字证书)

    一.生成CA根证书 生成 CA 私钥:openssl genrsa -out ca.key 1024 因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书:openssl ...

  4. 【一】生成CA根证书、公钥、私钥指令(数字证书)

    一.生成CA根证书 生成 CA 私钥:openssl genrsa -out ca.key 1024 因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书:openssl ...

  5. keytool制作CA根证书以及颁发二级证书

    步骤一:环境准备 1)电脑中部署好以下环境 Tomcat:apache-tomcat-9.0.11 JDK:jdk1.8.0_144 通过地址:http://localhost:8080/   可以正 ...

  6. 如何在Ubuntu 20.04中配置CA根证书

    导读 证书颁发机构(CA)是负责颁发数字证书以保证通信安全的实体. 它充当证书所有者和依赖证书的一方的受信任的第三方. CA是公共的,也可以是私有的. 公共CA通常用于验证网站的身份,私有CA用于为客 ...

  7. 自建ca根证书_如何创建私有 CA 并签发证书

    为什么需要自己的 CA? 因为公共 CA (比如排名前几的这几家:Comodo, Symantec, GlobalSign, DigiCert, StartCom)颁发证书要收费,而且价格很贵.当然现 ...

  8. Uos统信系统 CA根证书搭建

    CA根证书搭建 题目 一.安装openssl 二.建立根证书存放目录 创建目录及文件 生成证书 使用私钥进行签名 提示:有任何问题可以私信我,下班看到第一时间回复 题目 CA CA根证书路径/CA/c ...

  9. 中铁CA根证书安装不成功的解决办法

    中铁CA根证书安装不成功的解决办法(以下方法为网上找的,第一个方法亲试成功) 解决方案是(win7): 在左下角"开始"里面搜索"服务"(或者打开 " ...

最新文章

  1. 再读UNPv1:复习、实践、小结
  2. C++运算符重载(友元函数方式)
  3. c语言将数组变为空,求助~~ 如何把数组变成动态输入的?
  4. HDU1016(DFS)
  5. Apache Tiles的使用 前配置
  6. access 打印预览 代码_如何在亚银标签纸上批量打印条形码
  7. (26)FPGA面试题7分频器
  8. Pandas 对象储存
  9. Python学生信息管理系统的开发
  10. Docker基本使用(一)
  11. 蓝桥杯2017年第八届C/C++省赛C组第八题-九宫幻方
  12. ImageRanger 全萤幕检视操作说明
  13. 数据分析基础-Excel练习
  14. Could not find artifact com.oracle:ojdbc7:pom:12.1.0.2 in central (https://r......的解决方案
  15. Java验证邮箱格式是否正确
  16. C4D快速入门教程——软件界面介绍
  17. 【Windows】使用Window自带远程桌面远程
  18. 【无标题】AD导入CAD文件发现找不到图形
  19. 基于Java+Swing+Mysql员工信息管理系统
  20. 如何导入阿里巴巴字体图标

热门文章

  1. 五笔打字:速成手册---半小时学会五笔打字
  2. n维椭球体积公式_为了方差无偏估计为什么要用n-1?
  3. 在Windows中安装一些python的第三方库
  4. 谋退市,前程无忧要新开始?
  5. linux下制作win7安装U盘
  6. 国家标准《信息技术 人工智能 知识图谱技术框架》第三次编辑会成功召开
  7. Rust代码检查工具Clippy原理浅析
  8. 个人服务器制作教程,个人网站反代服务器架设教程
  9. [论文阅读笔记]Aladdin: Optimized Maximum Flow Management for Shared Production Clusters
  10. Linux文件查找和文件内容关键字查找