说到https,我们就不得不说tls/ssl,那说到tls/ssl,我们就不得不说证书机构(CA)、证书、数字签名、私钥、公钥、对称加密、非对称加密。这些到底有什么用呢,正所谓存在即合理,这篇文章我就带你们捋一捋这其中的关系。

对称加密

对称加密是指双方持有相同的密钥进行通信,加密速度快,但是有一个安全问题,双方怎样获得相同的密钥?你总不能总是拿着U盘把密钥拷贝给对方吧。
常见的对称加密算法有DES、3DES、AES等

非对称加密

非对称加密,又称为公开密钥加密,是为了解决对称加密中的安全问题而诞生,一个称为公开密钥(public key),即公钥,另一个称为私钥(private key),即私钥。但是它的加密速度相对于对称加密来说很慢。

  • 公钥(public key)是对外开放的,私钥(private key)是自己拥有的。
  • 公钥(public key)加密的数据,只能用私钥(private key)解密。
  • 私钥(private key)加密的数据,只能用公钥(public key)解密。

信息安全问题

在信息安全性问题中,我们常常要做到三点才能保证信息的安全:

  1. 信息的保密性
  2. 信息的完整性
  3. 身份识别

信息的保密性(加密算法)

信息的保密性我们可以使用对称加密和非对称加密来完成,使用对称加密来完成,速度相对非对称加密很快,但是存在一个安全问题,密钥如何传递?由此通用的方法是使用非对称加密+对称加密来完成。客户端使用公钥对对称加密的密钥进行加密,然后传递给服务端,服务端使用私钥进行解密确认密钥,开始传输数据。

image.png

信息的完整性(数字签名)

信息传输的途中,我们的信息很有可能被第三方劫持篡改,所以我们需要保证信息的完整性,通用方法是使用散列算法如SHA1,MD5将传输内容hash一次获得hash值,即摘要。客户端使用服务端的公钥对摘要和信息内容进行加密,然后传输给服务端,服务端使用私钥进行解密获得原始内容和摘要值,这时服务端使用相同的hash算法对原始内容进行hash,然后与摘要值比对,如果一致,说明信息是完整的。

image.png

身份识别(数字证书)

在信息传输的过程中,我们通常需要验证信息的发送方的身份,这时我们转化一下思路就可以完成,把发送端的公钥发送给接收端,发送端通过把自己的内容使用私钥加密然后发送给接收端,接收端只能用发送端的公钥解密,自然就验证了发送端的身份。

image.png

数字证书

在传输的过程中,客户端如何获得服务器端的公钥呢?当时是服务器分发给客户端,如果一开始服务端发送的公钥到客户端的过程中有可能被第三方劫持,然后第三方自己伪造一对密钥,将公钥发送给客户端,当服务器发送数据给客户端的时候,中间人将信息进行劫持,用一开始劫持的公钥进行解密后,然后使用自己的私钥将数据加密发送给客户端,而客户端收到后使用公钥解密,反过来亦是如此,整个过程中间人是透明的,但信息泄露却不得而知。

image.png

为了防止这种情况,数字证书就出现了,它其实就是基于上上面所说的私钥加密数据,公钥解密来验证其身份。
数字证书是由权威的CA(Certificate Authority)机构给服务端进行颁发,CA机构通过服务端提供的相关信息生成证书,证书内容包含了持有人的相关信息,服务器的公钥,签署者签名信息(数字签名)等,最重要的是公钥在数字证书中。
数字证书是如何保证公钥来自请求的服务器呢?数字证书上由持有人的相关信息,通过这点可以确定其不是一个中间人;但是证书也是可以伪造的,如何保证证书为真呢?
一个证书中含有三个部分:"证书内容,散列算法,加密密文",证书内容会被散列算法hash计算出hash值,然后使用CA机构提供的私钥进行RSA加密。

image.png

当客户端发起请求时,服务器将该数字证书发送给客户端,客户端通过CA机构提供的公钥对加密密文进行解密获得散列值(数字签名),同时将证书内容使用相同的散列算法进行Hash得到另一个散列值,比对两个散列值,如果两者相等则说明证书没问题。

image.png

一些常见的证书文件类型如下:

X.509#DER 二进制格式证书,常用后缀.cer .crt
X.509#PEM 文本格式证书,常用后缀.pem
有的证书内容是只包含公钥(服务器的公钥),如.crt、.cer、.pem
有的证书既包含公钥又包含私钥(服务器的私钥),如.pfx、.p12

HTTPS,TLS/SSL

Hyper Text Transfer Protocol over Secure Socket Layer,安全的超文本传输协议,网景公式设计了SSL(Secure Sockets Layer)协议用于对Http协议传输的数据进行加密,保证会话过程中的安全性。

使用TCP端口默认为443

TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。

SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。

SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用公钥进行非对称加密,链路建立好之后,SSL对传输内容使用对称加密。

对称加密
速度高,可加密内容较大,用来加密会话过程中的消息

公钥加密
加密速度较慢,但能提供更好的身份认证技术,用来加密对称加密的密钥

image.png

HTTPS单向认证

Https在建立Socket连接之前,需要进行握手,具体过程如下:

image.png

  1. 客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息;

  2. 服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书;

  3. 客户端使用服务端返回的信息验证服务器的合法性,包括:

    • 证书是否过期;
    • 发行服务器证书的CA是否可靠;(通过查询浏览器或本机内的CA证书)
    • 返回的公钥是否能正确解开返回证书中的数字签名;(通过使用本机或浏览器内置的CA公钥进行解密)
    • 服务器证书上的域名是否和服务器的实际域名相匹配;
    • 验证通过后,将继续进行通信,否则,终止通信;
  4. 客户端向服务端发送自己所能支持的对称加密方案,供服务器端进行选择;

  5. 服务器端在客户端提供的加密方案中选择加密程度最高的加密方式;

  6. 服务器将选择好的加密方案通过明文方式返回给客户端;

  7. 客户端接收到服务端返回的加密方式后,使用该加密方式生成产生随机码,用作通信过程中对称加密的密钥,使用服务端返回的公钥进行加密,将加密后的随机码发送至服务器;

  8. 服务器收到客户端返回的加密信息后,使用自己的私钥进行解密,获取对称加密密钥;
    在接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信过程中信息的安全;

HTTPS双向认证

双向认证和单向认证类似,它额外增加了服务端对客户端的认证:

image.png

  1. 客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息;

  2. 服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书;

  3. 客户端使用服务端返回的信息验证服务器的合法性,包括:

    • 证书是否过期;
    • 发行服务器证书的CA是否可靠;(通过查询浏览器或本机内的CA证书)
    • 返回的公钥是否能正确解开返回证书中的数字签名;(通过使用本机或浏览器内置的CA公钥进行解密)
    • 服务器证书上的域名是否和服务器的实际域名相匹配;
    • 验证通过后,将继续进行通信,否则,终止通信;
  4. 服务端要求客户端发送客户端的证书即客户端证书公钥,客户端会将自己的证书发送至服务端;

  5. 验证客户端的证书,通过验证后,会获得客户端的公钥;

  6. 客户端向服务端发送自己所能支持的对称加密方案,供服务器端进行选择

  7. 服务器端在客户端提供的加密方案中选择加密程度最高的加密方式;

  8. 将加密方案通过使用之前获取到的公钥进行加密,返回给客户端

  9. 客户端收到服务端返回的加密方案密文后,使用自己的私钥进行解密,获取具体加密方式,而后,产生该加密方式的随机码,用作加密过程中的密钥,使用之前从服务端证书中获取到的公钥进行加密后,发送给服务端;

  10. 服务端收到客户端发送的消息后,使用自己的私钥进行解密,获取对称加密的密钥,在接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信过程中信息的安全;

作者:olaH
链接:https://www.jianshu.com/p/29e0ba31fb8d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

HTTPS、证书机构(CA)、证书、数字签名、私钥、公钥相关推荐

  1. 基于 OpenSSL 生成自签名证书,数字签名,泛域名证书,ca证书,PKI等

    基于 OpenSSL 生成自签名证书_qhh0205-CSDN博客_openssl自签名证书 windows 下 nginx 双向认证自签名证书配置 windows 下 nginx 双向认证自签名证书 ...

  2. HTTPS原理和CA证书申请

    转载自:HTTPS原理和CA证书申请(满满的干货) 众所周知,WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于 ...

  3. HTTPS原理和CA证书申请(满满的干货)

    读到这篇博客,对https的原理介绍的比较详细且生动,为了防止丢失,mark一下,以下是原文链接 https://blog.51cto.com/11883699/2160032 众所周知,WEB服务存 ...

  4. 【计算机网络】网络安全 : 公钥分配 ( 公钥使用者 | 公钥分配 | CA 证书格式 | CA 证书吊销 )

    文章目录 一.公钥使用者 二.公钥分配 三.CA 证书格式 四.CA 证书吊销 一.公钥使用者 公钥密码体质中 , 用户的公钥也不能随意的公布 , 公钥无法防止伪造 , 欺骗 , 接收者无法确认公钥使 ...

  5. Autosar之自签名证书与CA证书

    文章目录 一.安全传输 1.框架 2.如何实现传输安全? 3. 对称加密和非对称加密的区别? 4.伪随机数和真随机数 5.数字签名 -- 验证完整性 & 认证数据来源 6.为什么使用摘要算法的 ...

  6. ROOT证书、CA证书和使用CA签发的X.509证书

    简介 日常开发中,我们程序员不怎么会接触证书相关的问题,对信息安全领域相关的内容知之甚少.因为平时主要实现的业务很少要直接面向底层的通信,也就很少关注这证书这样的知识.在一般情况下,我们仅仅只是在使用 ...

  7. fiddler证书生成ca证书命令及抓包配置

    fiddler证书生成ca证书命令 下载OpenSSL fiddler配置https fiddler导出证书 将文件直接放到openssl的bin目录下 执行cmd命令生成ca证书 将证书放到andr ...

  8. 服务器证书和CA证书一样吗?

    什么是服务器证书?服务器证书和CA证书一不一样?服务器证书有什么用?本文将主要为大家介绍服务器证书的相关知识. 一.服务器证书是什么意思? 服务器证书是SSL数字证书的一种形式,意指通过提交数字证书来 ...

  9. 微信企业支付 服务器根证书,微信支付服务器证书根ca证书有什么用

    随着现如今网络的不断发展,我们的生活跟网络密不可分,现在到处充斥着手机消费,只要你手机上有微信.支付宝不管到哪里都可以买你想买的东西,钱包已经在家里闲置多时.手机支付给我们的生活带来便利的同时也会伴随 ...

  10. eap wifi 证书_用openssl为EAP-TLS生成证书(CA证书,服务器证书,用户证书)

    我用的是openssl-1.0.2k. 脚本支持生成RSA,ECC证书. 运行时带参数指定类型. -->开始.按以下路径建立文件,脚本.ssl_create-cert-v0.4.7z ssl_c ...

最新文章

  1. inux 后台执行命令
  2. python获取用户输入中文_python中的用户输入
  3. WebStorm React JS语法报错问题
  4. linux8系统安装总结,硬盘安装Ubuntu 8.04经验总结(图)
  5. Java POI 导出EXCEL经典实现 Java导出Excel
  6. 迁移学习之域自适应理论简介(Domain Adaptation Theory)
  7. spring cloud eureka 服务之间调用_Spring-cloud微服务实战【一】:微服务的概念与演进过程...
  8. matlab simplify,[求助]Matlab2016b里没有simple函数
  9. python 发送邮件的两种方式【终极篇】
  10. C语言中的字节对齐以及其相关处理
  11. 云原生时代|分布式系统设计知识图谱(内含22个知识点)
  12. Mysql重新安装(ubuntu)
  13. 177.第N高的薪水
  14. 帆软大数据自定义分页
  15. 中文维基百科数据爬取与预处理
  16. Android显示——一帧的渲染过程(VSYNC)
  17. Linux之open虚拟专业网安装部署
  18. 超越传统微调!Meta新作VPT:视觉Prompt来了!冻结主干,仅调节1%参数,性能提升显著!...
  19. pycharm创建的.py文件显示为.txt文件样式
  20. GITC--2014全球互联网技术大会正式开始售票

热门文章

  1. QCC3040---multipoint function
  2. 每日一课 | 详解数据分析最爱用的估算法
  3. 神经网络 深度神经网络,主流的神经网络的框架
  4. NOIP复习篇———枚举
  5. 全球最流行12款浏览器
  6. python 自动生成数字_python – 使用yaml自动生成配置和具有数字...
  7. 蔡氏混沌matlab,蔡氏混沌电路的MATLAB仿真研究_高见芳
  8. 逆战网络连接断开连接服务器超时_《天天逆战》出现网络连接问题解决方案
  9. 关于“其他容量”的清理方法
  10. 呦呦鹿鸣,食野之蒿。【诗经早就预言了屠呦呦的重大发现