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

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

1. HTTP与HTTPS的区别

  1. 安全性:

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

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

  2. 端口:

    • HTTP:默认使用端口80。

    • HTTPS:默认使用端口443。

  3. 证书:

    • HTTP:不需要证书。

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

  4. 性能:

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

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

       

2.  使用场景的区别

  • HTTP:

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

  • HTTPS:

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

       

3. 证书机制

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

  • 证书持有者的公钥

  • 证书持有者的身份信息

  • 证书的有效期

  • CA的数字签名

     

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

  1. 客户端请求连接:

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

  2. 服务器响应:

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

  3. 证书验证:

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

  4. 生成会话密钥:

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

  5. 会话密钥解密:

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

  6. 加密通信:

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

       

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

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

  1. 证书持有者信息:

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

  2. 公钥:

    • 用于加密数据的公钥。

  3. 证书颁发机构(CA)信息:

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

  4. 有效期:

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

  5. 序列号:

    • 证书的唯一标识符。

  6. 证书类型:

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

  7. 指纹:

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

       

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

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

  1. 接收证书:

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

  2. 检查有效性:

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

  3. 验证签名:

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

  4. 检查撤销状态:

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

  5. 域名匹配:

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

  6. 信任链验证:

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

       

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

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

  1. 客户端生成随机数:

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

  2. 服务器生成随机数:

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

  3. 预主密钥生成:

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

  4. 发送预主密钥:

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

  5. 服务器解密预主密钥:

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

  6. 生成会话密钥:

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

    • 客户端随机数(Client Random)

    • 服务器随机数(Server Random)

    • 预主密钥(Pre-Master Secret)

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

       

8. 总结

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

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

posted @ 2024-09-06 11:02  ReturnHome  阅读(28)  评论(0编辑  收藏  举报