前记
有段时间处理了一个关于软件SHA1和SHA2版本和服务器使用的证书加密方式之间关系的案件。不是很懂,于是静下心来认真学习了一下关于数字证书的知识。整理了这篇文章。
发明这个技术是为了解决什么问题
以现实生活中网上购物为例。
1:伪装
有人伪造一个amazon网站,骗取客户下单,然后取得客户的钱,信用卡信息,住址等等信息
2:篡改
客户访问了正确的amazon网站,但是下单给amazon的途中下单信息被修改了
3:偷听
客户访问了正确的amazon网站,把下单信息正确传递给了amazon,但是下单内容被别人窃听
4:否认
→客户访问了正确的amazon网站,把下单信息正确传递给了amazon,也没有被别人窃听,商品也正确发送,但是客户对自己订单不认可。
怎么解决
数字证书(或者叫电子证书)
简单来说,对因为amazon(B2C中的B)和客户(B2C中的C)相互看不到,构建不了相互信任。所以,需要对双方都进行约束。另外amazon和客户之间的谈话内容,又不想让第3者听到,所以需要把谈话内容加密。
什么是数字证书?
由电子证书发行机构或者组织(简称CA)生成,放置于网站服务器,证明网站的合法性和加密通信用的cer文件。
电子证书里有什么?
- 网站公开信息(网站名,国家,证书有效期等等)
- 网站公钥
- 依赖CA的电子签名算法(通常是SHA256)
- 公开信息的信息摘要(指纹)经过CA加密后的密文。
- 信息摘要算法
电子证书怎么生成?
- 网站向合法的,已经被认可的CA机构申请。
- 网站提供给CA必要的信息,CA通过一些手段确认网站没有信任问题
- CA使用自己私钥(※1)电子签名(※2)网站信息,并打包成cer文件
※1
CA是提供给提出申请服务器数字证书的组织机构。
机构本身持有一对公钥和私钥。公钥和私钥本身就是成对的。
机构本身是需要浏览器和操作系统认可的。
CA的公钥会提前保存于浏览器的【受信任的根证书颁发机构】列表中。
这是事前准备工作,具体用途,在下面解释。普通用户并不需要特别关心。
※2
网站提供给CA什么申请信息?
- 网站公开信息(网站名,国家,证书有效期等等)
- 网站公钥
- 依赖CA的电子签名算法(通常是SHA256)
- 信息摘要(指纹)
- 信息摘要算法
电子证书怎么证明网站合法,已经保护通信?
证明网站合法
1:在浏览器里输入想访问的网址
2:经过DNS服务器,将访问发送给服务器
3:服务器把自己的证明书发给浏览器
4:浏览器根据本地的CA公钥,解析服务器证明书(证明书里有CA私钥加密过的密文,以及服务器信息)
5:浏览器取得一个随机数(为以后加密通讯用),使用证书里服务器的公钥加密,传递给服务器
6:服务器使用自己的私钥解密
7:以后浏览器和网站服务器之间的通信,就使用这个随机数加密往来数据(对称加密)
什么是公钥和私钥?
这就涉及到加密方式。
■对称加密
加密和解密采用同一个密码。最常见和普通的加密方式。例如,zip加密,execl加密
算法有DES、3DES、AES
■非对称加密
加密和解密必须使用不同的密钥。
非对称加密是指用户有两个密钥,一个是公钥(publicKey),一个是私钥(privateKey)
公钥是公开的,任何人可以使用,私钥是保密的,只有用户自己可以使用,公钥和私钥是对应关系。
用户可以用对方的公钥加密信息,并传送给对方,对方使用自己的私钥将密文解开。
公私钥是互相解密的,而且绝对不会有第三者能插进来。
算法有RSA
→SHA1,SHA256
■单向加密
信息摘要。从文件中通过算法提取固定长度字符串的【指纹】。如果文件改动过,算出的【指纹】就会改变。
根据【指纹】不能还原文件内容
【指纹】往往比原文件小很多很多,便于传输。
算法有MD5,SHA-1,SHA256,TLS1.2
后记
纯文字描述,太难理解了。最好搭配找一些视频来看。