Java基础教程:HTTPS
HTTPS
HTTPS解决什么问题
一个简单的回答可能会是 HTTP
它不安全。
- 由于 HTTP 天生明文传输的特性,在 HTTP 的传输过程中,任何人都有可能从中截获、修改或者伪造请求发送,所以可以认为 HTTP 是不安全的;
- 在 HTTP 的传输过程中不会验证通信方的身份,因此 HTTP 信息交换的双方可能会遭到伪装,也就是
没有用户验证
; - 在 HTTP 的传输过程中,接收方和发送方并
不会验证报文的完整性
,综上,为了解决上述问题,HTTPS 应用而生。
什么是HTTPS
HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol)
协议,它 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
HTTPS
的全称是 Hypertext Transfer Protocol Secure
,它用来在计算机网络上的两个端系统之间进行安全的交换信息(secure communication)
,它相当于在 HTTP 的基础上加了一个 Secure 安全
的词眼,那么我们可以给出一个 HTTPS 的定义:HTTPS 是一个在计算机世界里专门在两点之间安全的传输文字、图片、音频、视频等超文本数据的约定和规范。HTTPS 是 HTTP 协议的一种扩展,它本身并不保传输的证安全性,那么谁来保证安全性呢?在 HTTPS 中,使用传输层安全性(TLS)
或安全套接字层(SSL)
对通信协议进行加密。
可以理解为 HTTP + SSL(TLS) = HTTPS。
HTTPS做了什么
- 加密
- 数据一致性
- 身份认证
HTTPS 协议其实非常简单,RFC 文档很小,只有短短的 7 页,里面规定了新的协议名,默认端口号443
,至于其他的应答模式、报文结构、请求方法、URI、头字段、连接管理等等都完全沿用 HTTP,没有任何新的东西。
也就是说,除了协议名称和默认端口号外(HTTP 默认端口 80),HTTPS 协议在语法、语义上和 HTTP 一样,HTTP 有的,HTTPS 也照单全收。那么,HTTPS 如何做到 HTTP 所不能做到的安全性呢
?关键在于这个 S
也就是 SSL/TLS
。
SSL/TLS
TLS(Transport Layer Security)
是 SSL(Secure Socket Layer)
的后续版本,它们是用于在互联网两台计算机之间用于身份验证
和加密
的一种协议。
参考资料
- 作者 | cxuan 来源 | Java 建设者 仅作学习交流使用!
HTTPS 协议其实非常简单,RFC 文档很小,只有短短的 7 页,里面规定了新的协议名,默认端口号443
,至于其他的应答模式、报文结构、请求方法、URI、头字段、连接管理等等都完全沿用 HTTP,没有任何新的东西。