HTTP + SSL/TLS = HTTPS
- SSL(Secure Sockets Layer,安全套接字协议)
- TLS(Transport Layer Security,传输层安全协议)
- HTTP(HyperText Transfer Protocol ,超文本传输协议),让计算机之间可以进行明文数据交换,默认端口80.
- HTTPS(HyperText Transfer Protocol Secure,超文本传输安全协议),用SSL/TLS对数据加密,再通过HTTP传输,保证数据的安全性,默认端口443.
SSL 与 TLS 区别
SSL与TLS都是用于互联网传输的加密协议。
- SSL是有Netscape开发加密协议;
- SSL 1.0版本没有公开发布;
- SSL 2.0版本于1995年发布,简写成SSLv2, 于2011年被IETF废弃;
- SSL 3.0版本于1996年发布,简写成SSLv3, 于2015年被IETF废弃;
- TLS是基于SSL 3.0的一个新版本,原则上他的名字是SSL 4.0;只是IETF在把SSL标准化时把SSL名称改成了TLS。
CA及数字证书
证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构,HTTP服务升级为HTTPS时,就需要数字证书来保证其通讯链路的安全,Let’s Encrypt 是免费提供此证书的公益机构。
-
申领证书流程:
- 服务器先生成一对密钥(私钥+公钥);
- 公钥+服务器信息(域名、ip等),发送给CA机构;
- CA机构会根据收到的信息,核实身份并加密生成证书,此证书也只有CA机构的私钥才能解密,这样也就保证了域名与服务器ip的一一对应关系,保证通讯链路的安全性。
-
使用证书
- 客户访问域名:「https://www.example.com」
从CA机构获取域名对应证书,客户浏览器根据证书中公钥给需要传输的数据进行加密。 - 服务器获得数据后,用自己的私钥来解密数据,如果公钥与私钥数据不匹配,就算第三方获得数据,也无法解密。
- 客户访问域名:「https://www.example.com」
-
数字证书组成部分有:
- 主体信息(域名、公司名、地址、国家等);
- 有效期;
- Public Key;
- CA的签名;