详解https协议和http协议的区别和底层工作原理

文摘   2024-09-06 10:55   北京  

HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)是用于在网络上传输数据的协议。它们之间的主要区别在于安全性和数据加密。以下是详细的比较和相关机制的介绍:

1. HTTP与HTTPS的区别

  1. 安全性

  • HTTP:数据以明文形式传输,容易被窃听和篡改。

  • HTTPS:通过SSL/TLS协议对数据进行加密,确保数据在传输过程中不被窃取或篡改。

  • 端口

    • HTTP:默认使用端口80。

    • HTTPS:默认使用端口443。

  • 证书

    • HTTP:不需要证书。

    • HTTPS:需要SSL/TLS证书,以验证服务器的身份。

  • 性能

    • HTTP:由于没有加密,性能相对较快。

    • HTTPS:加密和解密过程会增加一些延迟,但现代技术已大大减少了这种影响.


    2.  使用场景的区别

    • HTTP

      • 适用于不需要保护用户隐私和数据安全的场景,如公共信息网站、博客等。

    • HTTPS

      • 适用于需要保护用户数据的场景,如在线支付、用户登录、个人信息提交等。


    3. 证书机制

    HTTPS使用SSL/TLS证书来确保安全性。证书由受信任的证书颁发机构(CA)签发,包含以下信息:

    • 证书持有者的公钥

    • 证书持有者的身份信息

    • 证书的有效期

    • CA的数字签名


    4. HTTPS实现加密的详细过程

    1. 客户端请求连接

    • 客户端(如浏览器)向服务器发送HTTPS请求。

  • 服务器响应

    • 服务器返回其SSL/TLS证书,包含公钥和其他信息。

  • 证书验证

    • 客户端验证证书的有效性(检查是否由受信任的CA签发、是否过期等)。

  • 生成会话密钥

    • 客户端生成一个随机的会话密钥,并使用服务器的公钥对其进行加密,然后发送给服务器。

  • 会话密钥解密

    • 服务器使用其私钥解密会话密钥。

  • 加密通信

    • 之后,客户端和服务器使用会话密钥进行对称加密通信,确保数据的安全性。


    5. SSL/TLS证书包含的内容

    SSL/TLS证书通常包含以下信息:

    1. 证书持有者信息

    • 包括组织名称、域名、地址等。

  • 公钥

    • 用于加密数据的公钥。

  • 证书颁发机构(CA)信息

    • 颁发证书的机构名称和数字签名。

  • 有效期

    • 证书的起始日期和到期日期。

  • 序列号

    • 证书的唯一标识符。

  • 证书类型

    • 例如,域名验证(DV)、组织验证(OV)或扩展验证(EV)。

  • 指纹

    • 证书的哈希值,用于快速验证证书的完整性。


    6. 证书验证的详细过程说明

    证书验证的过程通常包括以下步骤:

    1. 接收证书

    • 客户端接收到服务器发送的SSL/TLS证书。

  • 检查有效性

    • 验证证书是否在有效期内(检查起始日期和到期日期)。

  • 验证签名

    • 使用CA的公钥验证证书的数字签名,确保证书未被篡改。

  • 检查撤销状态

    • 查询证书撤销列表(CRL)或使用在线证书状态协议(OCSP)检查证书是否被撤销。

  • 域名匹配

    • 确保证书中的域名与客户端请求的域名匹配。

  • 信任链验证

    • 验证证书是否由受信任的CA签发,确保信任链完整。


    7. 生成会话密钥的详细过程

    生成会话密钥的过程通常涉及以下步骤:

    1. 客户端生成随机数

    • 客户端生成一个随机数(Client Random),用于后续的密钥生成。

  • 服务器生成随机数

    • 服务器生成一个随机数(Server Random),同样用于密钥生成。

  • 预主密钥生成

    • 客户端生成一个预主密钥(Pre-Master Secret),并使用服务器的公钥对其进行加密。

  • 发送预主密钥

    • 客户端将加密后的预主密钥发送给服务器。

  • 服务器解密预主密钥

    • 服务器使用其私钥解密客户端发送的预主密钥。

  • 生成会话密钥

    具体的生成过程通常使用伪随机函数(PRF),将上述三个随机数结合起来,生成对称加密算法的会话密钥。

    • 客户端随机数(Client Random)

    • 服务器随机数(Server Random)

    • 预主密钥(Pre-Master Secret)

    • 客户端和服务器使用以下信息生成会话密钥


    8. 总结

    HTTP和HTTPS的主要区别在于安全性,HTTPS通过SSL/TLS协议提供加密和身份验证。HTTPS适用于需要保护用户数据的场景,而HTTP适用于不需要保护的场景。证书机制和加密过程确保了数据在传输过程中的安全性。

    SSL/TLS证书包含了持有者信息、公钥、CA信息、有效期等内容。证书验证过程确保了证书的有效性和完整性。生成会话密钥的过程涉及客户端和服务器生成随机数,并结合预主密钥生成对称加密算法的会话密钥,确保后续通信的安全性。


    想学习测试开发的朋友,请添加吴老师微信:fosterwu

    光荣之路
    关注光荣之路软件技术培训账号,即时收取测试开发技术的免费公开课信息,各大公司测试及开发招聘信息、最新的技术咨询、线下测试技术分享沙龙信息
     最新文章