首页 > 其他分享 >为什么https要使用证书

为什么https要使用证书

时间:2022-11-28 19:00:09浏览次数:37  
标签:为什么 公钥 加密 证书 秘钥 密钥 https 服务器 客户端

为什么https要使用证书

加密:
共享密钥加密
加密和解密公用一套秘钥,这样就会产生问题,已共享秘钥加密方式必须将秘钥传送给对方,但如果通信被监听,那么秘钥可能会被泄漏产生危险。

公开秘钥加密
公开秘钥加密使用一种非对称加密的算法,使用一对非对称的秘钥,一把叫做共有秘钥,一把叫做私有秘钥,在加密的时候,通信的一方使用共有秘钥进行加密,通信的另一方使用私有秘钥进行解密,利用这种方式不需要发送私有秘钥,也就不存在泄漏的风险了。

https加密方式
因为公开秘钥加密的方式比共享秘钥加密的方式钥消耗cpu资源,https采取了混合加密的方式,来结合两者的优点。

在秘钥交换阶段使用公开加密的方式,之后建立连接后使用共享秘钥加密方式进行加密。

为什么要使用证书:
因为公开加密还存在一些问题就是无法证明公开秘钥的正确性,为了解决这个问题,https采取了有数字证实认证机构和其相关机构颁发的公开秘钥证书。

1.服务器将自己的公开秘钥传到数字证书认证机构
2.数字证书认证机构使用自己的秘钥来对传来的服务器公钥进行加密,并颁发数字证书
3.服务器将传回的公钥证书发送给客户端,客户端使用数字机构颁发的公开秘钥来验证证书的有效性,以及公开秘钥的真实性
4.客户端使用服务器的公开秘钥进行消息加密,后发送给服务器。
5.服务器使用私有秘钥进行解密。

浏览器在安装的时候会内置可信的数字证书机构的共有秘钥。


首先我们说下使用HTTPS的作用,主要有三个:
1.验证服务器或客户端的身份合法
2.报文加密
3.验证数据完整性

HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输,总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。

HTTPS在传输的过程中会涉及到三个密钥:
1、服务器端的公钥和私钥,用来进行非对称加密
2、客户端生成的随机密钥,用来进行对称加密

一个HTTPS请求实际上包含了两次HTTP传输,可以细分为7步。
1、客户端向服务器发起HTTPS请求,携带客户端SSL/TLS信息,服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,将公钥下发到客户端。
2、客户端收到服务器端的公钥之后,会对公钥进行检查,验证其合法性,如果发现发现公钥有问题,那么HTTPS传输就无法继续。
公钥的验证:在设备中存储了全球公认的知名CA的公钥。当客户端接收到服务器的数字证书的时候,会通过系统中内置的CA公钥进行解密,如果解密成功说明公钥是有效的,否则就是不受信任的证书。
3、如果公钥合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,我们将该密钥称之为client key,即客户端密钥,这样在概念上和服务器端的密钥容易进行区分。
然后用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,
至此,HTTPS中的第一次HTTP请求结束。

4、客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。
5、服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。
6、然后服务器将加密后的密文发送给客户端。
7、客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。
这样HTTPS中的第二个HTTP请求结束,
整个HTTPS传输完成。



 

标签:为什么,公钥,加密,证书,秘钥,密钥,https,服务器,客户端
From: https://www.cnblogs.com/oktokeep/p/16933030.html

相关文章

  • iOS证书和描述文件申请详情步骤
     因为之前在iOS开发这条道路上吃了很多不必要的亏,特此想把自己的经验分享给大家,对于初学者来讲不是上架AppStore购买一个黑苹果是不划算的,简单的内测或者玩玩完全是......
  • 不同类型的 SSL 证书解释
    了解不同类型的SSL证书:扩展验证(EV)、组织验证(OV)和域名验证(DV)。查看用例及更多。SSL/TLS证书用于验证网站的身份并在服务器和浏览器之间创建安全连接。有许多......
  • https是怎么防止中间人攻击的
    什么是中间人攻击一般,一个http请求,是从客户端请求出去,再到达服务端。但请求不是直接到达服务端的,因为网络上要经过很多"节点",最后才会到达服务端。 举个例子比如,平时......
  • .crt证书转成.pem格式 JAVA实现
    背景知识介绍图是网上找到,链接:https://www.zhihu.com/question/29620953需求.crt和.pem后缀的都是证书,只是需要用不同的工具才能查看里面的内容,理解是不同的编码......
  • https://www.cnblogs.com/liyue3/p/16924616.html
    Android12源码网盘下载路径:“iTOP-3588开发板\01_【1TOP-RK3588开发板】基础资料\03_iTOP-RK3588开发板Android12源码”源码是分卷压缩包,需要全部下载下来放在同......
  • PoE交换机为什么值得你选择?
    PoE交换机的应用范围很广泛,它与普通的交换机有什么区别呢?PoE交换机为什么值得你选择呢?接下来飞畅科技的小编就来为大家详细介绍下,一起来看看吧!PoE交换机除了具备普通交换机......
  • 为什么标准库的模板变量都是inline的
    最近在看标准库里的type_traits的时候发现了个有趣的地方,几乎所有在标准库里的变量模板都是inline的!不仅常见的实现上(libstdc++、libc++、msstl)都是inline的,标准里给的形......
  • 为什么要把类设置成密封?
    前几天笔者提交了关于FasterKvCache的性能优化代码,其中有一个点就是我把一些后续不需要继承的类设置为了sealed密封类,然后就有小伙伴在问,为啥这个地方需要设置成sealed?提......
  • springCloud将http请求网关更改为https请求
    如果需要将http请求换成https请求,大致需要三步。第一步:生成证书。网上有很多通过阿里云生成证书的教程。也有通过JDK生成证书。在jdk目录打开命令窗口,执行一下命令:keytoo......
  • 让uniGUI支持https
    今天在专家的帮助下,成功的让uniGUI支持https了。首先,去申请个免费的证书。我同事去阿里申请的,申请回是一个zip文件,里面有两个文件,一个扩展是per,一个key然后,把这两个证书......