HTTPS安全通信过程

Wesley13
• 阅读 954

一 、两对公私钥

1、CA公私钥:

CA公钥:预装在操作系统,内置在浏览器中。

备注:微软等公司会根据一些权威安全机构的评估选取一些信誉很好并且通过一定的安全认证的证书发布机构,把这些证书发布机构的证书默认安装在操作系统中,并且设置为操作系统信任的数字证书。

CA私钥:由CA机构保管,不会外泄。

2、服务公私钥:

服务端公钥:属于服务端的公私钥,保存在证书中,属于公开的秘钥。

服务端私钥:私钥服务端保管,不会外泄。

二、证书内容

证书=公钥(服务方生成密码对中的公钥)+申请者与颁发者信息+签名(用CA机构生成的秘钥对的私钥进行签名);

即便有人截取服务器A证书,再发给客户端,想冒充服务器A,也无法实现。因为证书和url的域名是绑定的。

HTTPS安全通信过程

三、交互过程

HTTPS安全通信过程

其中第3步证明证书是由CA机构颁发的有效证书,但是不能确定是该服务端返回的证书(可能在传输中被篡改)。然后校验证书中的证书使用者(服务端)信息--域名,与要请求的目标服务端是否一致。一致才能说明证书不仅是受信任的机构颁发的证书,还说明就是目标服务端的证书。才可以信任证书中的服务端公钥。

再在客户端本地生成随机码(对称秘钥),将随机码用证书中的服务端公钥加密得到随机码的密文,再将请求的应用数据用随机码进行加密(对称加密)。

请求到服务端,服务端用服务端自己的私钥将随机码原文解密出来,再用这个随机码解密请求应用数据得到应用数据的明文(除了服务端其他人无法解密得到随机码)。服务端处理请求后,响应的应用数据使用同样的随机码加密响应数据(对称加密)。

客户端收到响应数据后用之前的随机码解密。

为什么应用数据要用对称加密呢?因为对称加解密的效率远高于非对称加解密。而非对称加解密更加安全,所以用来传输对称加解密的秘钥。

SSL结合了这两种加密算法的优点,通过非对称加密来协商对称加密的密钥,握手成功之后便可使用对称加密来做加密通信对于RSA来说,客户端是用RSA的公钥把预主密钥加密后传给服务器,服务器再用私钥来解密,双方再通过相同的算法来生成会话密钥,之后的应用层数据就可以通过会话密钥来加密通信。

参考: 

HTTPS安全通信过程

HTTPS中CA证书的签发及使用过程

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
java访问Https服务的客户端示例
关于证书1、每个人都可以使用一些证书生成工具为自己的https站点生成证书(比如JDK的keytool),大家称它为“自签名证书”,但是自己生成的证书是不被浏览器承认的,所以浏览器会报安全提示,要求你手动安装证书,提示风险,是否继续等。只有通过权威的CA机构付费获得的证书才能被浏览器承认。2、证书(无客户端服务端之分)保存着IP信息、证书过
Stella981 Stella981
3年前
Linux CA
CA(CertificateAuthority)证书颁发机构主要负责证书的颁发、管理以及归档和吊销。证书内包含了拥有证书者的姓名、地址、电子邮件帐号、公钥、证书有效期、发放证书的CA、CA的数字签名等信息。证书主要有三大功能:加密、签名、身份验证。1.什么是CA认证?CA认证,即CA认证机构,为电子签名相关各方提供真实性、可靠性验证
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
VC++网络安全编程范例(2)
数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样信息就可以安全无误地到达目的地了。通过数字的手段
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Chrome 或将于2018年正式弃用 HPKP 公钥固定标准
早些年谷歌工程师为了提高互联网整体的安全性避免因证书颁发机构违规操作而设计了HPKP公钥固定标准。公钥固定允许网站在服务器部署证书颁发机构的哈希值,若网站使用的证书与固定的哈希不对应则拒绝连接。公钥固定的现实意义在于如果有CA证书颁发机构违规向某个域名私自签发证书那么也无法实现对网站的劫持。但是现在谷歌浏览器已经决定弃用HPKP公钥固定标准
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这