https和数字证书
什么是HTTPS
HTTPS是在HTTP和TCP网络层之间新增了一层SSL层(TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善)
HTTPS协议的主要作用可以分为两种,一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网络的真实性
数字证书的原理
数字签发认证机构(CA)
也称为电子商务认证中心、电子商务认证授权机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公约的合法性检验的责任。
普通数字证书签发的流程
- 首先用RSA产生一对公私钥,私钥自己好好保存好,把公钥粘贴到证书签发机构网站,同时填入有效期,域名等消息。
- CA会加上颁发者等信息,这个整体叫作X。
- 对X使用某著名hash算法对整体内容hash得到Y,
- 对Y使用颁发机构的私钥对这些信息进行一次签名得到Z。
- 然后将X,Z连成一个文件,这个文件就是所谓的数字证书了。所以数字证书里,包括证书持有者的身份信息,证书持有人的公钥,以及签名信息。
数字证书的自(根证书)签发流程
区别:
- 颁发者是自己
- 对B使用自己的私钥签名,而不是颁发机构的私钥
https利用数字证书来保证传输的可靠性
- 当client向server发送请求时,server返回自身的证书(里面包括server的公钥),以下简称数字证书
- client利用CA证书公钥解码数字证书中的签名Z,得到上文中的Y1。
- 同时对数字证书中的X通过相同的hash算法加密,得到Y2,
- 如果Y1等于Y2则证明数字证书真实有效且可信任。
- client产生一个随机字符串用于后面的对称加密,用数字证书的公钥对这个字符串加密传送给server,server用自己的私钥解密后保存
- 然后双方的通信采用这个字符串对称加密通信
其中图2的valid见图1的vertification
如何申请普通数字证书
方法1
- 自己通过openssl生成公钥和私钥,把公钥复制到CA网站,并填入其他相关信息,获取到证书。
- 把证书和私钥拷贝到网站入口,比如nginx相关目录下
方法2
- 去CA网站填入相关信息,让网站生成证书和私钥。
- 把证书和私钥拷贝到网站入口,比如nginx相关目录下
https请求
- https可以称为有7次握手,分别是tcp的3次握手和ssl的4次握手
- https的建立连接的时延大概是http的2-4倍