聊一聊https中的数字证书

       由于https中涉及的概念较多,因此简单说说其中较为麻烦的数字证书等相关内容。

       由于http的传输服务是明文传输,所谓的明文传输就是在通信双方的中间通过抓包发现http的头部是明文,可以很容易获取cookie,url中的信息,不要小看这些http头部信息,曾经很多帐号的账户名和密码都存在这两个位置,当然随着哈希,编码等技术的应用,现在想要获取密码并不容易了。同时http的数据部分也是明文,可以很容易还原出数据内容,例如文字,图片和视频。

       因此就出现了https服务,将明文传输的内容进行加密,包括http头部和数据部分,由于加密之后的数据是一堆杂乱无章的二进制,因此,就无法获取有意义的信息。

       确切的说https并不是一种协议,而是TLS+HTTP两种协议组合的服务。因此http还是以前的http,只是在http和TCP(当然也有DTLS,不多说)层之间加入了ssl协议,这样tcp上层的数据部分就可以加密传输。
关于加密发展的历史,我在这篇文章中有一定的阐述。

       其实ssl可以设计的很简单,因为该层主要作用就是协商通信双方加密密钥,然后对上层数据进行加解密。ssl之所以设计如此复杂的原因,还是在于数字证书的存在。首先加密有两种方式,对称加密和非对称加密,其中对称加密的速度要快于非对称加密,因此在实际的应用中数据量大的加密都是对称加密。

       但是对称加密无法保证密钥的安全,因此需要非对称加密来传输对称加密所使用的密钥,而非对称加密由于需要验证通信对等方的身份,因此需要数字证书。当然数字证书的作用就是携带签验证通信对等方的身份名,在openssl(openssl是ssl协议那一堆RFC的实现)中,证书还有另一个作用就是携带非对称加密公钥以及非对称算法等。

       在非对称加密中有两个概念需要注意的,就是签名和加密。举例来说,RSA是一种非对称加密算法,该算法即可以用于加密,也可以用于签名。所谓RSA加密就是使用公钥进行加密,私钥进行解密,应用就是ssl协议中的预主密钥交换部分;所谓的RSA签名就是使用私钥进行签名(其实也是加密,只是换一种说法),使用公钥验证签名,对应ssl握手中的证书签名和验签部分。

       证书的验证过程就是,网站证书certA部分的签名由签发该证书CA验证,主要是该CA的公钥进行验签,因为certA的签名部分是由CA的私钥进行签名的;当然为了证明CA的身份,CA也需要一个证书,就是CA 的证书certB,certB是由更高一级的CA签发的,直至根CA。当然根CA也有一个证书就是根证书certC,通常该证书是集成在firefox这种浏览器厂商里面的,或者像android这种操作系统里面。

       因此整个过程就是certA使用certB的公钥验证certA的合法性,certB使用certC的公钥验证certB的合法性,整个证书链必须全部验证通过,证书的验证才能通过。可以看到整个验证最关键的地方在于根证书。如果系统中手动安装了虚假的根证书,整个证书链的验证就会出现问题。因此,像前面提到的那样,根证书的集成是很关键的,是多家厂商和浏览器以及操作系统公司协商,资质认定的结果。像前一段时间沃通被吊销根证书就是这些国外的浏览器巨头和操作系统巨头认定沃同不具备根证书的资格,说白了就是信用有问题,然后从浏览器以及操作系统中被删除。那么由沃通授权的CA所签发的证书就会受到影响。具体就是浏览器会弹出告警信息。因此可以看出即使是根证书机构,也是要约束自己的行为,不能随意签发证书。

       当然实际上证书的验证还包括证书里面的使用者信息或者扩展中的altname要和实际访问的域名保持一致,日期不能失效等等,crl以及oscp列表等。因此这就导致了我们在申请证书的时候,是需要填写证书的域名信息,也就是申请的证书是应用于哪个网站的。证书的时间信息一般是由签发的CA决定的,可能是一年的有效期或者更长。当然,由于某种原因,例如网站私钥泄漏了,需要重新申请证书,该证书就被废弃掉,添加到crl列表。

       就是有时候有人来问我加密和证书相关概念,希望这篇文章能够帮助一些人在这些概念上有个了解。

       本文为CSDN村中少年原创文章,转载记得加上小尾巴偶,博主链接这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村中少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值