一、为什么需要使用HTTPS
因为HTTP不安全,当我们使用http网站时,会遭到劫持和篡改,如果采用https协议,那么数据在传输过程中是加密的,所以黑客无法窃取或者篡改数据报文信息,同时也避免网站传输时信息泄露。
二、部署HTTPS:需要部署TLS + 配置HTTP层
HTTPS本质上是:
HTTP协议(应用层) + TLS加密(传输层)
↑ ↑
应用协议 安全层协议
实际上是:HTTP需要TLS来变成HTTPS
三、https访问流程
浏览器发起请求,请求https://baidu.com,服务端接收请求,并返回一个包含公钥的证书给浏览器,浏览器通过CA机构判断证书是否合法,不合法返回警告,合法则生成一个随机数,通过公钥加密随机数并传输给服务端,服务端通过私钥解密随机数,通过传入随机数的对称加密,对数据进行加密,并传输对称加密的内容给浏览器,浏览器再根据本地存储的随机数进行解密,再通过对称加密传输所有内容
四、证书类型
| 对比 | 域名型 DV | 企业型 OV | 增强型 EV |
|---|---|---|---|
| 绿色地址栏 | 小锁标记+https | 小锁标记+https | 小锁标记+企业名称+https |
| 一般用途 | 个人站点和应用; 简单的https加密需求 | 电子商务站点和应用; 中小型企业站点 | 大型金融平台; 大型企业和政府机构站点 |
| 审核内容 | 域名所有权验证 | 全面的企业身份验证; 域名所有权验证 | 最高等级的企业身份验证; 域名所有权验证 |
| 颁发时长 | 几分钟 | 3-5个工作日 | 5-7个工作日 |
| 单次申请年限 | 3个月 | 1-2年(1年一换) | 1-2年 |
| 赔付保障金 | —— | 125-175万美金 | 150-175万美金 |
五、部署https证书
1.申请和下载真实证书 前提必须有一个备案好的域名(包含ssl、TLS协议)
2.部署https证书
[root@LB ~]# mkdir -p /etc/nginx/ssl_key #创建证书目录
[root@LB ~]# cd /etc/nginx/ssl_key
[root@LB ssl_key]# rz -E #上传证书到目录
[root@LB ssl_key]# unzip 21972714_fnmb.top_nginx.zip
3.集群实现HTTPS(只需要部署到负载均衡上,必需携带头部信息)
[root@LB ~]# vim /etc/nginx/conf.d/lb.conf
点击查看代码
upstream webs { #地址池,所要转发到的服务器
server 10.0.0.7;
server 10.0.0.9;
}
server {
listen 443 ssl; #监听的端口
server_name www.wp.com; #访问的域名
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
location / {
proxy_pass http://webs; #代理到地址池中的服务器(七层)
proxy_set_header Host $http_host; # 携带头部信息(默认不携带头部信息,所以以ip的方式去请求访问,会去找目录的第一个.conf文件)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ## 记录客户真实的IP地址
proxy_http_version 1.1; #长链接(一次链接多次请求)
#proxy_http_version 1.0; #短连接(一次链接一次请求)
proxy_connect_timeout 30; #Nginx 与后端服务器建立 TCP 连接的最大时间(延迟高或者网络延迟时使用)
proxy_send_timeout 60; #Nginx 向后端发送请求数据的超时时间 (上传大文件或后端处理缓慢时使用)
proxy_read_timeout 60; #Nginx 从后端读取响应数据的超时时间(后端处理耗时较长时调高)
proxy_buffering on; #代理响应缓冲(默认开启)【增加内存占用,实时性略降低】
proxy_buffer_size 32k; #单个缓冲区的大小,用于存储后端响应的第一部分(需确保足够容纳响应头)
proxy_buffers 4 128k; #设置缓冲区的数量和大小,用于存储后端响应的内容体(内存有限的服务器需谨慎设置,避免 OOM(内存溢出))
}
}
#配置将用户访问http请求强制跳转https
server {
listen 80;
server_name www.wp.com;
return 302 https://$server_name$request_uri;
}
点击查看代码
server{
listen 80; #监听80端口
server_name www.wp.com; #网站域名
root /code/wordpress; #实际访问的代码目录
location / { #默认返回的页面location的优先级最低
index index.php index.html;
}
location ~ \.php$ { #根据优先级执行优先.php结尾的文件
fastcgi_pass 127.0.0.1:9000; #PHP进程
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; ##$document_root为root指定的代码目/code录/$fastcgi_script_name为用户访问服务器的URI index.php
include fastcgi_params; #存放PHP变量
fastcgi_keep_conn on; # 开启长连接
fastcgi_connect_timeout 60s; # 超时时间
fastcgi_param HTTPS on; # 添加此参数支持HTTPS字段
}
}
浙公网安备 33010602011771号