1、画出TSL链路的通信图
TSL(transport layer security)安全套接层,由IETF互联网工程任务组将SSL进一步标准化,于1999年公布的第一版TSL协议文件。与ssl一样是基于https使用的一组协议,
https加解密流程简介:
- 用户在浏览器发起 HTTPS 请求(如 https://www.bai’du.com/),默认使用服务端的 443 端口进行连接。
- HTTPS 需要使用一套 CA 数字证书,证书内会附带一个公钥 Pub,而与之对应的私钥 Private 保留在服务端不公开。
- 服务端收到请求,返回配置好的包含公钥 Pub 的证书给客户端。
- 客户端收到证书,校验合法性,主要包括是否在有效期内、证书的域名与请求的域名是否匹配,上一级证书是否有效(递归判断,直到判断到系统内置或浏览器配置好的根证书),如果不通过,则显示 HTTPS 警告信息,如果通过则继续。
- 客户端生成一个用于对称加密的随机 Key,并用证书内的公钥 Pub 进行加密,发送给服务端。
- 服务端收到随机 Key 的密文,使用与公钥 Pub 配对的私钥 Private 进行解密,得到客户端真正想发送的随机 Key。
- 服务端使用客户端发送过来的随机 Key 对要传输的 HTTP 数据进行对称加密,将密文返回客户端。
- 客户端使用随机 Key 对称解密密文,得到 HTTP 数据明文。
- 后续 HTTPS 请求使用之前交换好的随机 Key 进行对称加解密。
2、如何让浏览器识别自签的证书
我们可以通过两台主机进行自行签证,一台发送证书请求,另一台充当CA进行签名
(1)自建CA签证机构在192.168.164.138这台主机上
[root@localhost centos]# cd /etc/pki/CA #进入/etc/pki/CA目录
[root@localhost CA]# ls
certs crl newcerts private
[root@localhost CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048) #创建密钥cakey.pem
Generating RSA private key, 2048 bit long modulus
..................................................................+++
.....+++
e is 65537 (0x10001)
[root@localhost CA]# ll private/
total 4
-rw-------. 1 root root 1675 Apr 3 08:33 cakey.pem
[root@localhost CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365 #生成证书cacert.pem,写好相关的公司地址,这里就建好了签证中心
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name<