一、HTTPS(Hypertext Transfer Protocol Secure,安全超文本传输协议) 是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP进行通信,并利用SSL(Secure Socket Layer,安全套接层)/TLS(Transport Layer Security,传输层安全)来加密数据包,并提供对网站服务器的身份认证,保护交换数据的安全性、隐私性与完整性。
二、HTTPS 不同于HTTP 的默认端口及多出一个加密/身份验证层SSL/TLS(在 HTTP 与 TCP 层之间)。HTTP的默认端口为80,HTTPS的默认端口为443。
三、HTTPS 协议需要从 CA 申请证书,有免费证书也有付费证书。
四、HTTPS 优点:
1. 信任主机的问题。 采用 HTTPS 的 服务器 Server 必须从 CA 申请一个用于证明服务器用途类型的证书, 并且该证书只有用于对应的 Server 的时候,客户端才信任此服务器Server 。
2. 防止通信过程中数据的泄密和被窜改。
3. 防止中间人攻击。
4. 降低被劫持风险。
5. 无状态连接。HTTPS 默认采用无状态连接,每次请求都是独立的,这有利于实现负载均衡和提高系统性能。
6. SEO(Search Engine Optimization,搜索引擎优化)。搜索引擎对采用HTTPS协议的网站搜索结果会提升排名优先展示。
五、HTTP与HTTPS协议的连接过程:
1. 如果 URL 的协议是 HTTP,则客户端会打开一条到服务端端口 80(默认)的连接,并向其发送老的 HTTP 请求。
2. 如果 URL 的协议是 HTTPS,则客户端会打开一条到服务端端口 443(默认)的连接,然后与服务端握手,以二进制格式与服务器交换一些 SSL/TLS 的安全参数,附上加密的 HTTP 请求。 所以,HTTPS 比 HTTP 多了一层与 SSL/TLS 的连接,这也就是客户端与服务端 SSL/TLS 握手的过程,整个过程主要完成以下工作:
1)客户端向服务端发出请求,发送如下信息:支持的协议版本,一个随机数,支持的加密方法。
2)服务端回应使用的协议版本,一个随机数,使用的加密方法,服务器证书。
3)客户端验证服务器证书,若证书真实有效,则取出服务端公钥,向服务端发送:一个用公钥加密的随机数(Pre-Master Key)。客户端通过拥有的3个随机数生成随后进行通信的会话密钥。
4)服务端解密从客户端接收的用公钥加密的第3个随机数,通过拥有的3个随机数生成会话密钥,将之前所有发送的数据做个摘要再加密一下供客户端校验,并回应可以进行通信。
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
欢迎关注。助您在编程路上越走越好!