博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
什么是安全证书,访问者到底是怎么校验安全证书的,服务端返回安全证书后,客户端再向谁验证呢?
阅读量:4211 次
发布时间:2019-05-26

本文共 1374 字,大约阅读时间需要 4 分钟。

使用openssl实现ssl连接,有涉及到ssl证书。

https的作用有三:1加密传输 2认证 3数据完整性
ssl证书的主要是用来做认证和加密。大多数证书基于 X.509 v3 证书标准。
下面以一次ssl连接进行说明。

比如客户端要认证服务器,服务器怎么证明自己是真实的服务器,而不是钓鱼网站呢?这需要服务器有个证书。证书包含以下信息:

使用者的公钥值。
使用者标识信息(如名称和电子邮件地址)。
证书的有效时间。
颁发者CA标识信息。
颁发者CA的数字签名。
你可以在IE中Internet选项》内容》证书 中看看证书长什么样。

有效的证书需要由权威机构CA签名,CA会用自己的私钥来生成数字签名。这个权威机构CA客户端是可以完全信任的,客户端浏览器会安装CA的根证书,由CA签名的证书是被CA所信任的,这就构成了信任链,所以客户端可以信任该服务器的证书。

客户端与服务器建立ssl连接时,服务器将自身的证书传输给客户端,客户端在验证证书的时候,先看CA的根证书是否在自己的信任根证书列表中。再用CA的根证书提供的公钥来验证服务器证书中的数字签名,如果公钥可以解开签名,证明该证书确实被CA所信任。再看证书是否过期,访问的网站域名与证书绑定的域名是否一致。这些都通过,说明证书可以信任。

接下来使用服务器证书里面的公钥进行服务器身份的验证。 客户端生成一个随机数给到服务器。 服务器对随机数进行签名,并回传给到客户端。 客户端用服务器证书的公钥对随机数的签名进行验证,若验证通过,则说明对应的服务器确实拥有对应服务器证书的私钥,因此判断服务器的身份正常。否则,则任务服务器身份被伪造。这些都没问题才说明服务器是可信的。

接下来客户端会生成会话密钥,使用服务器公钥加密。服务器用自己的私钥解密后,用会话密钥加密数据进行传输。ssl连接就建立了。

PKI

PKI(Public Key Infrastructure,公共密钥基础设施)是通过使用公钥密码技术和数字证书来确保系统信息安全并负责验证数字证书持有者身份的一种体系

PKI基本服务:

用户提交个人信息和公钥,申请证书;
核准用户信息,签发用户公钥证书;
查询给定的证书的状态(过期、撤销、挂起、正常等);
PKI系统基本组件:
RA:注册机构,接受来自用户的证书请求,验证用户信息
CA:认证机构,使用自己的私钥签发用户公钥证书
CRL发布者:证书撤销列表,被撤销的证书的列表
CRL是一种离线证书状态列表,如果有条件可以使用OCSP组件,在线查询证书状态
资料库:存储已经签发过的证书及用户信息的服务器
订户:证书的持有实体
依赖方:依赖PKI提供服务的实体

订户公钥证书由CA签发,CA即“权威机构”

CA使用自己的私钥对证书签名,以证明订户身份与公钥的绑定
依赖方使用CA的公钥验证证书上的CA签名,即可确认绑定关系
问题1:我又怎么知道CA的公钥是不是真的是这个CA的?
解决方案:找另一个“权威机构”,签发CA的证书,以证明CA公钥与CA身份的绑定关系
问题2:那么“另一个权威机构”的公钥又由谁证明?
另另一个“权威机构”
总有一个最顶层的权威机构,是你不得不无条件信任的
无条件信任的CA,叫做信任锚,即信任的起点
由于信任“信任锚”,进而信任所有由它签发的其它CA证书。

转载地址:http://kegli.baihongyu.com/

你可能感兴趣的文章
Net远程管理实验
查看>>
反病毒专家谈虚拟机技术 面临两大技术难题
查看>>
几种典型的反病毒技术:特征码技术、覆盖法技术等
查看>>
Software Security Testing软件安全测试
查看>>
SQL注入漏洞全接触--进阶篇
查看>>
SQL注入漏洞全接触--高级篇
查看>>
SQL注入法攻击一日通
查看>>
论文浅尝 | 通过共享表示和结构化预测进行事件和事件时序关系的联合抽取
查看>>
论文浅尝 | 融合多粒度信息和外部语言知识的中文关系抽取
查看>>
论文浅尝 | GMNN: Graph Markov Neural Networks
查看>>
廖雪峰Python教程 学习笔记3 hello.py
查看>>
从内核看epoll的实现(基于5.9.9)
查看>>
python与正则表达式
查看>>
安装.Net Framework 4.7.2时出现“不受信任提供程序信任的根证书中终止”的解决方法
查看>>
input type=“button“与input type=“submit“的区别
查看>>
解决Github代码下载慢问题!
查看>>
1.idea中Maven创建项目及2.对idea中生命周期的理解3.pom文件夹下groupId、artifactId含义
查看>>
LeetCode-栈|双指针-42. 接雨水
查看>>
stdin,stdout,stderr详解
查看>>
Linux文件和设备编程
查看>>