HTTPS(HyperText Transfer Protocol Secure):超文本传输安全协议
常称为HTTP over TLS、HTTP over SSL、HTTP Secure
由网景公司于1994年首次提出
HTTPS的默认端口号是443(HTTP是80)
现在在浏览器上输入 http://www.baidu.com
会自动重定向到 https://www.baidu.com
并不是浏览器它自动帮你变成https的,是先发送了一次请求给服务器,服务器再告诉浏览器重定向到https
直接输入baidu.com,直接是https了
SSL/TLS
HTTPS是在HTTP的基础上使用SSL/TLS来加密报文,对窃听和中间人攻击提供合理的防护
SSL/TLS也可以用在其它协议上,比如
TLS(Transport Layer Security),传输层安全协议
前生是SSL(Secure Sockets Layer),安全套接层
历史版本信息
( 有没有发现: TLS的RFC文档编号都是以46结尾)
SSL/TLS - 工作在哪一层
OpenSSL
OpenSSL是SSL/TLS协议的开源实现,始于1998年,支持Windows、 Mac、 Linux等平台
常用命令
可以使用OpenSSL构建一套属于自己的CA,自己给自己颁发证书,称为“自签名证书”
HTTPS的成本
比如:
HTTPS的通信过程
总的可以分为3大阶段
TLS 1.2的连接
(这么多步骤是需要协商:TLS版本、加密套件、其他信息)
TLS 1.2的连接 - ①
①Client Hello
TLS 1.2的连接 - ②
② Server Hello
TLS 1.2的连接 - ③
③Certificate
TLS 1.2的连接 - ④
④Server Key Exchange
用以实现ECDHE算法的其中一个参数(Server Params)
TLS 1.2的连接 - ⑤
⑤Server Hello Done
TLS 1.2的连接 - ⑥
⑥ Client Key Exchange
◼ 目前为止,客户端和服务器都拥有了ECDHE算法的2个参数:Server Params 、Client Params
◼ 客户端、服务器都可以
TLS 1.2的连接 - ⑦
⑦ Change Cipher Spec
TLS 1.2的连接 - ⑧
⑧ Finished
TLS 1.2的连接 - ⑨、⑩
⑨ Change Cipher Spec
⑩ Finished
(7、8和9、10是对称的)
注意:
最终传递的内容:
编辑 → 首选项 → Protocols → TLS
配置服务器HTTPS - 生成证书
环境: Tomcat9.0.34、 JDK1.8.0_251
首先,使用JDK自带的keytool生成证书(一个生成免费证书的网站:https://freessl.org/)
配置服务器HTTPS - 配置Tomcat