首页 > Web开发 > 详细

https详解

时间:2019-08-20 21:18:28      阅读:101      评论:0      收藏:0      [点我收藏+]

http+ssl = https

ssl(Secure Sockets Layer):安全套接层,HTTPS的安全基于SSL

http:数据以明文传输,不安全

https:数据加密后传输,且对服务器进行验证,即当前服务器是不是可以被信任

https流程:

服务器先向CA申请证书,需要把自己的公钥传给CA,之后会放在证书中

证书主要包含:

证书所有人的公开密钥(即服务器的公钥)

证书发行者对证书的签名(即CA用自己的私钥对发行的证书的签名)

证书所使用的签名算法

证书的发行机构的信息

证书所有人的信息

1.客户端发起https请求,连接到服务器的443端口

2.服务器将自己的证书发送给客户端

3.客户端收到后,①用浏览器内置的证书发行者的公钥对证书签名验签,来验证证书的合法性;②如果合法,则取出服务器的公钥;客户端生成对称密钥,用服务器的公钥对其加密,发送给服务器

4.服务器收到后,用自己的私钥解密,取出对称密钥

之后客户端和服务器则用此密钥对传输的信息加密


优点:

防止了中间人攻击,即始终无法拿到服务器的公钥,更不用说用公钥加密的对称密钥了


CA是负责签发证书、认证证书、管理已颁发证书的机关;并不是一个,而是一类

申请证书的公司

申请的证书类型不同,价格不同,多域名型SSL证书、通配符(泛域名)SSL证书,企业型OVSSL和增强型EVSSL证书的费用相对来说较高

CA公司

要进入各个浏览器的根证书列表,CA公司每年必须过 WebTrust 年度审计,是很大的开销

CA链费用:新开的CA公司要等5-10年,才会被普遍信任,才能广泛进入根证书链。要想加快点,就得给别的大牌CA公司掏钱,买次级证书

要具备发放可信SSL证书的资质,这本身就是一个很大的成本

(来自百度)

关键点:发行证书的机构的公钥能够轻易获得,如果能的话,中间人就可以拦截证书进而取出服务器公钥;答案是不能,‘这些厂商跟浏览器和操作系统都有合作,它们的根公钥都默认装到了浏览器或者操作系统环境里,且设置了权限’


根证书与证书链:

就像是交通主管部门与驾校,我们拿到的驾照是由驾校授权的,而驾校是由主管部门授权的,这样就使得我们的驾照被国家承认

根证书就相当于主管部门,CA就相当于驾校,当然了驾校可能有多级授权,这样就产生了证书链

而证书链的顶端就是根证书,根证书是一份特殊的证书,它的签发者是它本身

根证书被内置在浏览器/操作系统中

拿到根证书就可以一层一层的拨开洋葱,最终拿到服务器的公钥


当然CA证书也是可以自签的,就是可以自己做一个证书出来;但没人认可

除非添加进去后,手动设置为被信任

像之前的12306证书就相当于自己做的证书,而非CA签发的证书


fiddler原理

内置根证书,可以拿到服务器公钥,进而拿到对称密钥;

其实就是个中间人攻击。。。

(至于为什么有根证书,就不得而知了)



(ps:有些内容来源于网络,不保证绝对正确,但相对合理)

https详解

原文:https://www.cnblogs.com/justaman/p/11385627.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!