zoukankan      html  css  js  c++  java
  • https协议

    最近我们看到很多站点使用 HTTPS 协议提供网页服务。

    如果你访问 baidu,查看一下地址栏,你会看到如下信息

    我们可以看到“https" 是绿色高亮显示,并且前面有一个锁标,表明网页请求是通过 https 协议。

    HTTPS 是 HTTP 协议的一个版本,在浏览器和服务器之间提供安全的数据传输。

    浏览器和服务器是通过 http 协议进行通信,在使用 HTTP 协议时,客户端向服务端提交表单数据时使用的是非加密方式。

    所以当浏览器和服务器通信的物理网络被侵入时,入侵者会得到网页浏览器和服务器之间传输的信息。

    HTTP 的应用场景是我们不需要使用高安全级别的方法加密数据。但银行这样的应用会发送像信用卡详细信息类的敏感数据,这会产生安全威胁。如果入侵者监视通信信道,他可以轻易获取到底层用户的敏感数据。

    HTTPS 保证安全可靠通信

    为了避免这样的安全威胁,HTTPS 应运而生。HTTPS 是一个确保数据在 web 浏览器与 web 服务器之间传输安全的协议。

    HTTPS 是由 HTTP 协议+SSL 协议构成。SSL 协议通过对信息进行加密,为网络通信提供安全保障。它运用了非对称密钥机制,这种机制是将公钥自由对外分发,而私钥只有信息接收者才有。

    HTTPS 对比标准的HTTP协议的两大优势:

    • 它确保了用户访问的是正确的网站,这个网站是他原本打算访问的而不是一些假冒网站。

    • 它确保了web浏览器与web服务器之间通信的内容是加密的,因此入侵者不能得到原始的通信内容。

    所以在 HTTPS 中,SSL 起到了确保了数据在客户端和 web 服务端传输安全。

    HTTPS 工作流程

      为了弄清 HTPPS 协议是怎么工作的,我们首先应该明白加密、解密处理过程是怎么工作的。

      加密就是把文本内容转换成其他某种格式,这样他人就无法解析原始内容。

      解密就是将之前我们转换的密文再转换回原始内容。

      加密和解密过程也可以用密钥去加密和解密信息。因此,如果信息是用某个密钥加密的,那么使用同一个密钥就能解密。这种方式称为对称密钥机制,因为使用的是同一个密钥进行加密和解密。

      假如我们用一个密钥加密字符串,另一个密钥来解密字符串,我们就把这个密钥称为非对称密钥。我们把用来加密字符串的密钥称为公钥,而用来解密字符串的密钥称为私钥。

    那么现在我们明白了 HTTPS 是用来安全传输 web 服务端与 web 浏览器之间的信息。这就是一个非常好的处理在传输信息的时候使用 HTTPS 协议。

    当浏览器用 HTTPS 协议请求一个页面时,下面的过程也会发生:

    1.浏览器向 server 发出 https 请求,server 监听 443 端口,这个端口是 web server 用来监听使用了 HTTPS 协议的请求。

    2.一旦 web 浏览器与 web 服务器之间成功建立连接,SSL 握手流程就开始了。

    在握手流程中,浏览器和服务器会针对数据的加密算法进行协商并答成一致。过程如下:

    • 1. 浏览器向服务器发送一些自身的信息(例如其支持的SSL版本);

    • 2. 服务器响应类似信息,例如通信过程中将要使用的SSL版本;

    • 3. 服务器会向浏览器发送证书,证书中包含了加密数据的公钥,发布者信息,有效期以及服务端唯一标识;

    • 4. 浏览器核实该证书,并发送信息通知服务器证书已验证完成;

    • 5. 浏览器向服务器发送“Change cipher spec”指令:浏览器将对数据进行加密;

    • 6. 服务器向浏览器发送“Change cipher spec”指令,服务端将要对待发送的数据进行加密。

     查看服务器发送过来的证书:

     

    3. 浏览器产生对称的密钥并通过服务器公钥将其加密,随后将加密后的密钥发送到服务器。这个对称的密钥用于在整个会话中进行加密和解密。

    我们知道数字证书是用来提供公钥的。有两个关键的术语用来理解数字证书。

    X.509 是一个定义数字证书格式的标准,它规定了证书中需要包含哪些信息,例如下面:

    • 版本 指定 X.509 的版本

    • 序列号 唯一的一串数字用以区分证书

    • 证书发布者名称 CA

    • 公钥

    CA(Certification authority表示发布该证书的机构。只有从发布者那里才能获得证书。证书中通常会有发布者的签名用以保证有效性。

    本文摘自: 理解 HTTPS 协议

  • 相关阅读:
    2019.6.20刷题统计
    36 线程 队列 守护线程 互斥锁 死锁 可重入锁 信号量
    35 守护进程 互斥锁 IPC 共享内存 的方式 生产者消费者模型
    34 进程 pid ppid 并发与并行,阻塞与非阻塞 join函数 process对象 孤儿进程与僵尸进程
    33 udp 域名 进程
    32 粘包 文件传输
    31 socket客户端. 服务器 异常 语法
    30 网络编程
    29 元类 异常
    26 封装 反射 常用内置函数
  • 原文地址:https://www.cnblogs.com/Pinapple/p/6768163.html
Copyright © 2011-2022 走看看