今天在发布Google上的Android应用时,遇到了一个问题,于是就打算了解一下,HTTPS单向认证和双向认证的区别,搜了很多资料,一下可以说明的比较详细,然后这里说一点我比较关心的,单向认证和双向认证都是安全可靠的,可以根据自身需求使用。
单向认证只要求站点部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证。而双向认证则是需要是服务端需要客户端提供身份认证,只能是服务端允许的客户能去访问,安全性相对于要高一些。
双向认证SSL 协议的具体通讯过程,这种情况要求服务器和客户端双方都有证书。 单向认证SSL 协议不需要客户端拥有 CA证书 ,以及在协商对称密码方案,对称通话密钥时,服务器发送给客户端的是没有加过密的(这并不影响SSL过程的安全性)密码方案。这样,双方具体的通讯内容,就是加密过的数据。如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯密钥长度足够的长,就足够的安全。这也是我们强调要求使用128位加密通讯的原因。一般Web应用都是采用单向认证的,原因很简单,用户数目广泛,且无需做在通讯层做用户身份验证,一般都在应用逻辑层来保证用户的合法登入。但如果是企业应用对接,情况就不一样,可能会要求对客户端(相对而言)做身份验证。这时就需要做双向认证。
单向认证:保证server是真的,通道是安全的(对称密钥);
双向认证:保证client和server是真的,通道是安全的(对称密钥);
单向认证:
1.clinet<——server
2.clinet——>server
1.client从server处拿到server的证书,通过公司的CA去验证该证书,以确认server是真实的;
2.从server的证书中取出公钥,对client端产生的一个密钥加密(该密钥即对称密钥)。将加密后的密钥发送到server端。server端用其私钥解密出数据,即得到了对称密钥;
3.以后的交易都是http+该对称密钥加密的方式来处理;
双向认证:
与单向认证的区别就是在1.2步骤中产生的是二分之一的对称密钥。
即对称密钥是client与server各自产生一半;
参考:http://blog.csdn.net/yixiayizi/article/details/8162119 和百度知道