Java基础教程:HTTPS
Java基础教程:HTTPS
HTTP的缺点
HTTP ,全称是超文本传输协议(Hypertext Transfer Protocol)
,它是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。它相当优秀和方便,到那时仍有这些不足:
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
这些问题不仅在HTTP上出现,其他未加密的协议中也会存在这类问题。
HTTPS
在目前大家正在研究如何防止窃听信息的几种对策中,最为普及的就是加密技术。HTTP协议中没有加密机制,但是可以通过SSL或TLS的组合使用,加密HTTP的通信内容。用SSL建立安全通信线路之后,就可以在这条线路上进行HTTP通信了。与SSL组合使用的HTTP被称为HTTPS或HTTP over SSL。
证书机制
在HTTP协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求。但如果使用SSL则可以。SSL不仅提供加密处理,而且还使用了一种成为证书的手段,可用于确定通信方。
证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。另外,伪造证书从技术角度来说是异常困难的一件 事。所以只要能够确认通信方(服务器或客户端)持有的证书, 即可判断通信方的真实意图。
通过使用证书,以证明通信方就是意料中的服务器。这对使用者个人来讲,也减少了个人信息泄漏为危险性。
完整性校验
SSL提供认证和加 密处理及摘要功能。所以说SSL===安全!
HTTPS的内核是HTTP
HTTPS 并不是一项新的应用层协议,只是 HTTP 通信接口部分由 SSL 和 TLS 替代而已。通常情况下,HTTP 会先直接和 TCP 进行通信。在使用 SSL 的 HTTPS 后,则会先演变为和 SSL 进行通信,然后再由 SSL 和 TCP 进行通信。也就是说,HTTPS 就是身披了一层 SSL 的 HTTP。
注:SSL 是一个独立的协议,不只有 HTTP 可以使用,其他应用层协议也可以使用,比如
SMTP(电子邮件协议)
、Telnet(远程登录协议)
等都可以使用。
SSL/TLS
TLS(Transport Layer Security)
是 SSL(Secure Socket Layer)
的后续版本,它们是用于在互联网两台计算机之间用于身份验证
和加密
的一种协议。
SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。
[!]如何保证公钥不被篡改?
将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。
[!]公钥加密计算量太大,如何减少耗用的时间?
每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。
简化理解版
参考资料
- https://mp.weixin.qq.com/s/Nv_2k87NdcpTU6TJZbXl-g
- http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html