Https通信之数字证书

https中的数字证书

  • 证书构成
  • 信息传递验证
  • 总结

数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。也就是说,我们拿到一个数字证书,我们可以判断出这个数字证书到底是谁的。

证书构成

先通过google浏览器查看百度翻译的数字证书
Https通信之数字证书_第1张图片
Https通信之数字证书_第2张图片
Https通信之数字证书_第3张图片
主要的几个参数:
1. Issuer CA (证书的发布机构)
指出什么机构颁发的证书,即证书创建者。截图中是 TrustAsia TLS RSA CA这个证书颁发机构。
Https通信之数字证书_第4张图片

2. TLS
TLS证书信任,就是从用户证书到中间证书,再到根证书,这样一个溯源的过程,浏览器需要找到道受信任的根证书,才会信任你的证书。
TLS(传输层安全)是更为安全的升级版 SSL。由于 SSL 这一术语更为常用,因此我们通常仍将安全证书称作 SSL。TLS 证书一般有ECC、RSA 或 DSA 三种加密方式可以选择,RSA加密只是其中一种方式

3. 证书格式RSA
RSA一种非对称的加密方法

4. 证书有效期
证书的有效开始时间到截止时间,有效期一般12个月起

5. 证书使用者(Subject )
这里是fanyi.baidu.com,一般是指申请证书的网站域名

6. 公钥
2048bits的16进制的数组数据,公钥进行server数据的解密

7. 签名算法(Signature algorithm)
截图中采用的是sha256RSA算法, 指的是这个证书的数字签名加密算法。当client从server中获取到加密数据,通过公钥RSA解密后获取加密的数字签名数据,然后通过该算法获取通信内容的指纹(hash值)进行数据安全性验证。专用于防止传输过程中,内容信息和签名hash一起被篡改

8. 签名哈希算法(Signature hash algorithm)
截图中采用的是sha256算法,用于对RSA解密后的内容信息进行hash值计算的算法。通过计算得出的hash值和随内容一起传递的hash值进行对比,可以验证传输中内容是否被更改。

9. 指纹算法(Thumbprint algorithm)
截图中为sha1。其原理就是在发布证书时,发布者根据指纹算法(一个hash算法)计算整个证书的hash值(指纹)并和证书放在一起,使用者在打开证书时,自己也根据指纹算法计算一下证书的hash值(指纹),如果和原始指纹一致,就说明证书没有被修改过。
这个指纹会使用"SecureTrust CA"这个证书机构的私钥用CA自己的数字证书的签名算法(Signature algorithm)加密后和证书放在一起。电脑系统一般默认自带CA的证书,该证书中有公钥和签名算法用于解密颁发的证书

10. 证书发布机构(CA)
在证书的发布机构发布证书时,证书的指纹和指纹算法,都会加密后再和证书放到一起发布,以防有人修改指纹后伪造相应的数字证书。这里的是用发证机构自己的私钥进行加密的

可以用证书发布机构的公钥(RSA算法)对指纹和指纹算法解密,也就是说证书发布机构除了给别人发布证书外,他自己本身也有自己的证书。

信息传递验证

信息发送前都会做一个hash计算得到一个hash值,根据hash特性这个过程是不可逆的。信息发送出去时,把这个hash值加密后作为一个签名和信息一起发出去。接收方接收到数据后根据签名算法对信息重新进行hash计算得到hash值,对比两出来源的hash值验证数据是否被篡改过。

重点要说为什么hash值要加密后再传递?这为了防止不会好意的人同时修改信息内容和其中的hash值,达到相匹配,所以hash值发出前都需要加密。

证书发布机构的证书在我们安装操作系统时,数字证书就已经安装在电脑中了。微软等操作系统开发商会根据一些权威机构的评估选取信誉较好且通过安全认证的证书发布机构,将他们的证书默认安装在系统中。证书机构持有自己数字证书对应的私钥,通过这个私钥加密他发布的证书的指纹算法及指纹(证书hash值作为证书的数字签名)。

数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。
我们为什么能判定证书的Subject呢?

  1. 拿到数字证书放入电脑或移动端后,根据证书的CA名字找到对应证书发布机构的数字证书,进行数字签名解密。
  2. 通过发证机构的公钥进行解码获取该证书的指纹和指纹加密算法,通过指纹算法再次计算该证书的指纹获取真实指纹,如果证书包含的指纹和真实指纹一致,则说明证书未被篡改过,证书真实可靠,那么证书中的subject真实可靠。

总结

  1. 证书由专业发证机构颁发,由多种信息参数如使用者、有效期、签名算法等多种信息组成。
  2. 证书公钥是为了对传递的信息进行RSA解密获取源信息
  3. 签名算法是为了验证源信息是否被篡改过,源信息都是有被签过名的,计算源信息的指纹是是否匹配
  4. 指纹及指纹算法,好像和签名算法相同,但是他们的区别是指纹及指纹算法是为了确保证书的安全可靠性。 签名算法是为了确保传递的信息的安全可靠性。

该篇博客纯属个人观点和见解,如有错误恳请留言指正,万分感激!

相关链接

  1. Https通信之RSA加密签名

你可能感兴趣的:(常规基础篇)