# HTTPS ## 一、基本概念 ### 1.1 SSL SSL(Secure Sockets Layer,安全套接层)是一种安全协议,目的是为互联网通信提供安全保障,最早由网景公司(Netscape)推出。SSL 协议有三个版本,分别是 SSL v1、SSL v2、SSL v3: - v1 版本因为存在严重的安全漏洞,所以从未公开过。 - v2 版本在1995 年 2 月发布,但因为存在多个严重的安全漏洞而被 v3 版本替代。 - v3 版本在 1996 年发布,由网景公司全部进行重新设计。 ### 1.2 TLS 1966 年,IETF(Internet Engineering Task Force,国际互联网工程任务组)在 SSL v3 的基础进一步进行了标准化,微软为这个新的协议取名为 TLS v1.0 ,这也就是 TLS(Transport Layer Security,安全传输层协议)的由来。之后 TLS 继续发布了 v1.1,v1.2,v1.3 版本,当前主流的版本为 v1.2 。 ### 1.3 OpenSSL OpenSSL 是一个开源的底层密码库,封装了所有的密码学算法,并为 TLS/SSL 协议提供了完善的工具库,可以把它看做是 TLS/SSL 协议的具体实现。 ### 1.4 HTTPS HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer,超文本传输安全协议)是在 HTTP 的基础上通过 SSL/TLS 层来进行传输加密和身份认证,从而保证通讯的安全性。除此之外它的报文结构、请求方法等都完全沿用 HTTP 原有的模式,因此可以很方便地将原有 HTTP 服务转换为 HTTPS 服务。  ## 二、数据安全 具体而言,HTTPS 主要通过以下几种方式来保证通信的安全: ### 2.1 非对称加密 非对称加密算法需要一对密钥:公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)来进行加解密。用公钥加密的数据只有对应的私钥才能解密,反之亦然。因为加密和解密使用的是两个不同的密钥,从而叫作非对称加密算法。 HTTPS 的公钥可以由任意的客户端持有,但私钥只能由服务器持有,因此所有经过公钥加密的数据只能由对应的服务器解密。