ssl协议的身份认证和数据传输
来源:互联网 发布:wap游戏源码 编辑:程序博客网 时间:2024/05/01 23:21
关于http和https及https的加密,两者的区别还是比较好理解的:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
从程序员的角度来说,https比http多了个s,这个s是为了解决http明文传输这个缺陷的。明文传输的两个弊端是身份无法认证,数据传输不安全,而这个s就是一个相对来说很权威的解决方案,而这个s解决方案我们的确是可以自己来搭建的。先不管这样算法那样算法,先说ssl是怎么规避明文传输缺陷的。
1 身份认证
client -> server : SSL 协议的版本号,加密算法的种类等等信息。
server -> client:SSL 协议的版本号,加密算法的种类等等信息,以及自己的证书(该证书内有公钥,因为所有客户端都可以取到这把钥匙,所以叫公钥,只是个名称)。
client -> server:拿到了服务端的证书,开始验证服务端合法性,主要是看证书内容和实际情况是否吻合,比如证书域名和实际域名比较,或者用公钥来解证书内的数字签名。验证通过后,就可以进行数据传输了。
2 数据传输
client -> server:生成一个对称密钥,对请求的内容(如url及其参数)进行加密,然后用证书内的公钥对这个对称密钥再加一次密,一起发送到服务端。
server -> client:服务端用自己的私匙对拿到的加过密的对称密钥解密,然后用这把对称密钥对请求内容进行解密。再根据请求内容执行相关的操作,请求执行完毕返回时,再次用对称密钥对返回内容加密。
client -> server:拿到服务端返回的内容时,只需要用对称密钥对其解密就可以了。
上面是一个简化简单版本的基本流程,需要注意的是:
1 公钥指公开的钥匙,即每个客户端访问都可以获得该钥匙。私钥指只有自己有的钥匙,即服务端自己保留的钥匙。那么上面的流程中,服务端有一把公钥一把私钥,公钥负责加密,私钥负责解密,这就是非对称加密。那么客户端生成的对称密钥,既自己可以加密也可以让服务端解密,密钥既能加密又能解密,这就是对称加密。
3 数字签名,在上面身份认证阶段,客户端要验证服务端的合法性,需要用公钥来解密证书内的数字签名,那么根据非对称性,对其进行加密的肯定就是服务端的私钥了。
4 CA指第三方,它只起一个监督公正的作用,它在认证过程中的实际行为其实和服务端是一样的,它负责把服务端的公钥进一步用自己的私钥加密,然后把自己的公钥发给客户端,客户端能用CA的公钥解出服务端的公钥就算是可信的。
2 这个过程,不用自己写,在javax.net.ssl包里已经封装好了请求方法。
- ssl协议的身份认证和数据传输
- 基于X.509证书和SSL协议的身份认证过程实现
- 基于X.509证书和SSL协议的身份认证过程实现
- 扫盲 HTTPS 和 SSL/TLS 协议[2]:可靠密钥交换的难点,以及身份认证的必要性
- 常用的身份认证协议
- AFNetworking 2.x 的SSL身份认证
- AFNetworking 2.x 的SSL身份认证
- AFNetworking 2.x 的SSL身份认证
- AFNetworking 2.x 的SSL身份认证
- AFNetworking 2.x 的SSL身份认证
- AFNetworking 2.x 的SSL身份认证
- AFNetworking 2.x 的SSL身份认证
- 和身份认证相关的几个协议/标准
- 网银SSL身份认证
- Delphi实现WebService带身份认证的数据传输
- ECHAP:身份认证的安全协议
- VPN 身份认证协议
- [SSL]身份认证与数字签名
- 内核线程与用户线程的区别 http://blog.csdn.net/wangkechuang/article/details/7883170
- Vitaliy and Pie
- java基础-显示代码,构造代码块 , 构造函数的初始化顺序
- Java 接口和抽象类区别
- 面试准备之内存对齐
- ssl协议的身份认证和数据传输
- h264解码时的AVCDecoderConfigurationRecord 与 CodecPrivateData
- try-catch-finally-return的执行顺序
- 自定义控件三部曲之动画篇(九)——联合动画的代码实现
- 面试准备之排序算法
- 【CodeChef】ATM
- 开学了
- 高斯日记
- iOS 微信三方登陆