HTTPS工作流程
-
对称加密: 加密和解密的秘钥使用的是同一个。
-
非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
- Client发起一个HTTPS的请求,根据RFC2818的规定,Client知道需要连接Server的443(默认)端口。
- Server把事先配置好的公钥证书(public key certificate)返回给客户端。
- Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,不通过则显示警告信息。
- Client使用伪随机数生成器生成加密所使用的对称密钥,然后用证书的公钥加密这个对称密钥,发给Server。
- Server使用自己的私钥(private key)解密这个消息,得到对称密钥。至此,Client和Server双方都持有了相同的对称密钥。
- Server使用对称密钥加密“明文内容A”,发送给Client。
- Client使用对称密钥解密响应的密文,得到“明文内容A”。
- Client再次发起HTTPS的请求,使用对称密钥加密请求的“明文内容B”,然后Server使用对称密钥解密密文,得到“明文内容B”。
HTTP1.1与1.0的区别、HTTP与HTTPS的区别?
- 引入持久链接,即 在同一个TCP的链接中可传送多个HTTP请求 & 响应
- 多个请求 & 响应可同时进行、可重叠;
- 引入更加多的请求头 & 响应头

配置https环境
阿里云申请免费的证书
立即购买免费证书
创建证书,证书申请
服务器配置
环境:nginx的安装目录是/usr/local/scwangyutao99 二进制源包在/scwangyutao99/nginx-1.21.4目录下
cd /wangyutao99/nginx-1.21.4/ #切换到源码包
./configure --prefix=/usr/local/scwangyutao99 --with-http_stub_status_module --with-http_ssl_module #编译https配置文件
make #编译
cp /usr/local/scwangyutao99/sbin/nginx /usr/local/scwangyutao99/sbin/nginx.bak #备份原来的nginx
nginx -s stop #停止nginx
cp ./objs/nginx /usr/local/scwangyutao99/sbin/ #将编译好的nginx覆盖掉原有的nginx,提示输入yes
nginx #启动
配置nginx
将下载下来的ssl证书解压放置到/usr/local/scwangyutao99/conf/
server {
listen 443 ssl;
server_name www.yutao.co;
ssl_certificate 7558164_yutao.co.pem; #填写解压的pem文件
ssl_certificate_key 7558164_yutao.co.key; #填写解压的key文件
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.yutao.co;
location / {
rewrite ^(.*) https://$server_name$1 permanent;
}
}
#http重定向
访问网站已经是安全链接