https不是一种新的协议,只是http的通信接口部分使用了ssl和tsl协议替代,加入了加密、证书、完整性保护的功能,下面解释一下加密和证书,如下图所示
假设有一个认证中心简称CA(Certificate Authority),这个认证中心 CA 给 A 网站颁发了一个证书,这个证书有:
签发者
证书用途
A 网站的公钥
A 网站的加密算法
A 网站用的HASH算法
证书的到期时间等
但是,如果证书就这样给 A 网站了,那传输过程中如果有人篡改这个证书,那这个证书还有什么权威性?简单的很,把以上内容做一次HASH,得到一个固定长度(比如128位的HASH,然后再用CA的私钥加密,就得到了数字签名,附在以上证书的末尾,一起传输给 A 网站。
设想一下,如果不加密那个HASH,任何人都可以先篡改证书,然后再计算HASH,附在证书的后面,传给 A 网站 时,A 网站无法发现是否有人篡改过。而用CA私钥加密后,就生成了类似人体指纹的签名,任何篡改证书的尝试,都会被数字签名发现。
每个安全的证书都必须要由 CA 机构颁发,一般都只有一年,当证书过期时,需要重新申请,这是避免证书被破解。
SSL / TLS 握手详细过程
初略过程
浏览器将自己支持的一套加密规则发送给网站。
网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
获得网站证书之后浏览器要做以下工作
服务端接收浏览器发来的数据之后要做以下的操作:
浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据。其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性。由于浏览器生成的密码是整个数据加密的关键,因此在传输的时候使用了非对称加密算法对其加密。非对称加密算法会生成公钥和私钥,公钥只能用于加密数据,因此可以随意传输,而网站的私钥用于对数据进行解密,所以网站都会非常小心的保管自己的私钥,防止泄漏。
TLS握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输。正是由于HTTPS非常的安全,攻击者无法从中找到下手的地方,于是更多的是采用了假证书的手法来欺骗客户端,从而获取明文的信息。默认HTTP的端口号为80,HTTPS的端口号为443。
证书是否是信任的有效证书。
对方是不是上述证书的合法持有者。简单来说证明对方是否持有证书的对应私钥。验证方法两种,
合法持有者。简单来说证明对方是否持有证书的对应私钥。验证方法两种,
以上的所有验证,除了验证证书是否吊销需要和CA关联,其他都可以自己完成。验证正式是否吊销可以采用黑名单方式或者OCSP方式。黑名单就是定期从CA下载一个名单列表,里面有吊销的证书序列号,自己在本地比对一下就行。优点是效率高。缺点是不实时。OCSP是实时连接CA去验证(发送一个请求询问某证书是否过期),优点是实时,缺点是效率不高。
本文发布于:2024-01-30 18:01:56,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170660892021831.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |