HTTPS与数字证书 -基本概念

了解一些关于HTTPS的基本概念,以及HTTPS中使用到加密方式、数字证书的格式和验证逻辑

1. HTTPS相关基本概念

1.1 HTTP

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。详见 百度百科

1.2 HTTPS

HTTPS (全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 。详见 百度百科

1.3 HTTP与HTTPS区别

WEB 服务存在 http 和 https 两种通信方式:

①http 传输不加密,默认采用 80 作为通讯端口;

②https 对传输的数据进行加密,默认采用 443 端口。

HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。

706362720cd4b866cde4_595x334.png@900-0-90-f.png

1.4 SSL/TLS

SSL(Secure Sockets Layer)中文叫“安全套接层”,后来由于广泛应用,SSL 标准化之后就改名为 TLS(Transport Layer Security)了,其实 HTTPS 就是通过上面说到的那些手段来解决网络上可能存在的数据泄密、篡改、假冒的这些问题,保证网络传输的安全的

1.5 为何主流通信方式是HTTPS

使用的HTTP协议很容易导致身份伪装、信息被窃取、数据篡改、流量劫持等情况,而HTTPS协议与HTTP协议对比,增加来隐私性、数据完整性、身份认证等,更能保护网站和网站信息的安全。

HTTP明文协议的缺陷,是导致数据泄露、数据篡改、流量劫持、钓鱼攻击等安全问题的重要原因。HTTP协议无法加密数据,所有通信数据都在网络中明文“裸奔”。通过网络的嗅探设备及一些技术手段,就可还原HTTP报文内容。

HTTPS因为有了加密的动作,所以延迟上HTTPS会比HTTP响应慢一点,但是这点延迟比起信息泄露显然微不足道。

2. 加密方式

2.1 摘要算法&摘要

摘要算法是单向算法,明文只能转换成密文,密文却无法转换成明文,这种算法也叫HASH算法,如SHA1,MD5,CRC,SHA256等。可以这样理解,几乎很难找到两个不同的明文能生成同一个摘要。所以摘要算法能够用于验证数据的完整性,防篡改。

摘要就是一段信息或者一个文件通过某个哈希算法(也叫摘要算法)而得到的一串字符。

一般在软件发布时会同时公布软件的摘要信息,用户下载软件后再自行计算一次摘要,如果和发布者公布的值一致,则认为该软件由发布者发布未经更改过。

2.2 对称加密

对称加密是指用来加密和解密的是同一个密钥。其特点是加密速度快,但是密钥容易被黑客截获,所以安全性不高。常见的有AES、DES算法。

2.3 非对称加密

非对称加密是指用来加密和解密的是不同的密钥,它们是成对出现的,称为公钥和私钥,知道其中一个密钥是无法推导出另外一个密钥的。用公钥加密的内容需要用私钥才能解密,用私钥加密的内容需要用公钥才能解密。非对称加密的特点是安全性高,缺点是加密速度慢。常见的有RSA算法。

RSA算法的原理是基于这样的数学事实:两个大质数相乘得到的大数难以被因式分解。即一个大数很难被因式分解。

2.4 关于加密方式的思考

对称加密和非对称加密的作用都是对明文进行保护,但是他们都面临着一个问题,怎样分发密钥才安全?

  • 对称加密需要在网络中传输密钥显然不安全,必要一旦被劫持,那么有该密钥就可以破解该密钥加密的信息。非对称加密确没有该问题。
  • 非对称密钥的公钥是公开的,所以即使在网络中传输也无所谓,所以现在互联网上大多都使用的非对称加密。但是这又产生了新的问题,怎样保证公钥的真实性,如果通信中有中间人存在,并且它伪造了通信呢?这时数字签名和数字证书应运而生。

2.4 数字签名

数字签名的计算方法:对加密内容进行HASH算出HASH值(摘要),然后密钥加密,得出的这个结果值,就是数字签名。 接收方收到信息后,用密钥解密数字签名得到HASH值,然后算出内容的HASH值,两者相对比。对比结果,一致:传输内容没有被篡改;不一致:接收方收到的内容,被动手脚了,和发送方想传输的内容不是一个。

数字签名的作用: 不可抵赖与数据完整性 不可抵赖:如果公钥能解密,则内容一定是与该公钥对应的私钥加密而来,即可证明来源。 数据完整性:数字签名的HASH值和自己计算出的HASH值一致,即可证明该内容是完整的未经修改过。

数字签名参与的信息传输过程: 1190574-af070d96d722dcd3.png

但是数字签名不能确保"公钥"的真实性,第三方可偷换"公钥",达到与伪服务器通信的目的,这样又产生了数字证书。

2.5 数字证书

由权威证书中心CA(certificate authority,简称CA)颁发,作用是证明"公钥"的真实可信。 数字证书里面包含了服务器的公钥,服务器的域名以及服务器所属的公司信息等内容,并且该信息是用CA的私钥进行加密的。客户请求服务时,服务器会同时发送数字签名和数字证书给客户。证书工作流程如下:

服务器向CA中心申请证书,CA负责核实服务器的真实性,并在证书里内置服务器域名证书使用者信息 客户浏览器或操作系统里内置有权威CA的公钥信息(即CA公钥不需要在网络中传输) 客户请求服务时,服务器把自己申请的数字证书和内容的数字签名一同发给客户 客户收到信息后在本地CA列表里查找CA公钥对数字证书解密,拿到真正的公钥,再用该公钥去解密数字签名,拿到HASH值,再去对比完整性。

数字证书是什么?

  • 包含公钥且用来证明公钥合法性的载体
  • 颁发数字证书的机构被称为CA(Certificate Authority)

数字证书功能:

  • 身份认证:通过验证证书合法性进行身份认证
  • 数据加密:使用证书中的公钥对数据进行加密
  • 数据签名:使用数字证书的私钥对数据进行签名

证书作用:

  • 保密性 - 只有收件人才能阅读信息。
  • 认证性 - 确认信息发送者的身份。
  • 完整性 - 信息在传递过程中不会被篡改。
  • 不可抵赖性 - 发送者不能否认已发送的信息。
  • 保证请求者与服务者的数据交换的安全性。

数字证书只解决一个问题,安全的公钥交换。

在信息安全性问题中,我们常常要做到三点才能保证信息的安全:信息的保密性、信息的完整性、身份识别。

详见 百度百科

3. 数字证书格式

数字证书有很多格式版本,推荐阅读这篇博客,可以搞懂各个证书格式的关系和差异。

搞懂 PEM、ANS、PFX、P12、p8、CER、X509 等证书相关文件格式 后缀

提炼一下:

pfx文件不是证书,pfx是一种PKCS#12归档文件格式的一种后缀,PKCS #12文件格式的后缀为 :.p12 或者 .pfx

它通常被存储一个私钥和这个私钥相关的证书或者证书链

java9以后就会PCKS# 12 作为默认的keystore格式。

X.509数字证书格式,主要有X.509v3(1997)、X509v4(1997)、X.509v1(1988)等。比较常用的版本是TUTrec.x.509V3。

rfc 5280 X.509 PKI 解析 博客

官方文档 链接

X.509数字证书内部组成结构:

image-20220810102539549.png

证书样例: 11fcef85183cbf16d3e32fc2bd3f59cb_640x728.png@900-0-90-f.png

4. 数字证书的验证逻辑

X.509 v3 标准覆盖了2种类型的证书:CA证书终端证书

  • CA证书可以划分为3种:交叉证书(cross-certificates),自发证书(self-issued),自签证书(self-signed)。

    • 交叉证书的issuer和subject是不同的,交叉证书描述了2个CA之间的信任关系;

    • 自发证书的issuer和subject为相同的实体,自发证书用于支持策略或操作的修改;

    • 自签证书即自发证书,但可能会使用证书中的public key来验证数字签名,自签证书用于携带一个public key来开始证书路径。

  • 终端证书没有权限颁发证书。

数字证书的有效性验证主要从三个方面:

  1. 数字证书有效期验证

    数字证书的使用时间在有效时间范围内。

  2. 根证书验证

    一种,自签证书,自己就是自己的根,所以没啥可说的。

    二种,终端证书,是由CA证书签发的,所以要验证CA签名的真伪,这样就需要找到上一级的CA证书并进行验证,就这样一级一级向上寻找并验证,直到找到根CA证书。当根CA证书是可信任的,就可以保证它颁发的证书是可信任的,这条证书链可信任了,则终端证书就也是可信任的了。

  3. CRL验证

    CRL是经过CA签名的证书作废列表,用于证书冻结和撤销。一般来说证书中有CRL地址,供HTTP或者LDAP方式访问,通过解析可得到CRL地址,然后下载CRL进行验证。并且证书中有CRL生效日期以及下次更新的日期,因此CRL是自动更新的,因此会有延迟性。 还有另外一种方式OSCP证书状态在线查询,可以即时的查询证书状态。

posted @ 2023-04-18 19:59  MasonLee  阅读(362)  评论(0编辑  收藏  举报