概述
本文主要介绍JAVA对https的支持,为何使用https呢,https相当于是http的升级版本,具有http不具备的安全性.
什么是https
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
http和https的区别
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
Https协议的特点
Https的通信端口由SSL和TSL代替了,它是一种应用层协议,一般的情况下http直接和Tcp进行通信,当使用了SSL之后,就会变成先和SSL通信,SSL再和Tcp进行通信,如下图
采用了SSL协议之后,Http协议就具备了加密、证书、完整性保护三大功能,SSL是独立于Http存在的,它是现存的广泛使用的网络安全技术。
Https协议采用的加密技术
https协议加密技术按类型分为两类,对称加密和非对称加密
https对称加密技术SSL
为什么说SSL是对称加密呢,因为SSL也叫共享密钥加密,当客户端传递消息给服务端时其消息和密钥都是加密了的,但是其中的密钥一但被监听,消息也可能被破解.是一种看似安全,但存在一定风险的消息传输技术.
client-----publicKey----> server #通过publicKey加密解密过程
client<----publicKey----- server #通过publicKey加密解密过程
https非对称加密技术
“非对称加密”使用的时候有两把锁,一把叫做“私有密钥”,一把是“公开密钥”。
运行原理:服务器首先告诉客户端按照自己给定的公开密钥进行加密处理,客户端按照公开密钥加密以后,服务器接受到信息再通过自己的私有密钥进行解密,这样做的好处就是解密的钥匙根本就不会进行传输,因此也就避免了被挟持的风险。就算公开密钥被窃听者拿到了,它也很难进行解密,因为解密过程是对离散对数求值,这可不是轻而易举就能做到的事。以下是非对称加密的原理图:client-----publicKey----> server use privateKey #先通过publicKey加密解密再通过privateKey解密 client<----publicKey----- server use privateKey #先通过publicKey加密解密再通过privateKey解密
非称加密方式的缺点:
第一个是:如何保证接收端向发送端发出公开秘钥的时候,发送端确保收到的是预先要发送的,而不会被挟持。只要是发送密钥,就有可能有被挟持的风险。
第二个是:非对称加密的方式效率比较低,它处理起来更为复杂,通信过程中使用就有一定的效率问题而影响通信速度
非称加密方式的缺点
Https的安全通信机制
基于上述单个加密方式的不足,Https采用混合机制的加密方式,https则综合了公开密钥加密和共享密钥加密的两种方式,充分利用两者的优势,在最初的连接的时候使用非对称密钥的加密方式保证连接的安全性,之后稳定的通讯采用对称加密的方式,稳定的通讯是指确保交换的密钥是安全的。
公钥很可能存在被挟持的情况,无法保证客户端收到的公开密钥就是服务器发行的公开密钥。此时就引出了公开密钥证书机制。数字证书认证机构是客户端与服务器都可信赖的第三方机构。证书的具体传播过程如下:
- 服务器的开发者携带公开密钥,向数字证书认证机构提出公开密钥的申请,数字证书认证机构在认清申请者的身份,审核通过以后,会对开发者申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将密钥放在证书里面,绑定在一起
- 服务器将这份数字证书发送给客户端,因为客户端也认可证书机构,客户端可以通过数字证书中的数字签名来验证公钥的真伪,来确保服务器传过来的公开密钥是真实的。一般情况下,证书的数字签名是很难被伪造的,这取决于认证机构的公信力。一旦确认信息无误之后,客户端就会通过公钥对报文进行加密发送,服务器接收到以后用自己的私钥进行解密.
为什么还有很多网站不使用Https
1:加密通信会消耗一定的cpu和服务器资源,如果每次通信都加密,就会消耗更多的资源.
2: 如果所有的信息都采用https加密,这无疑是一种浪费。非敏感信息就算被窃取了,也无伤大雅。可以在其传输敏感信息的时候,采用https协议进行加密.
3:向认证机构购买证书的开销也是一笔很大的费用。
总结
本文主要介绍了HTTPS和其通信机制,现在更加注重信息安全,预计未来https的应用场景将会更广.