HTTPS安全证书——解决数据被窃取,数据报文被篡改

一、为什么需要使用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;
}
[root@LB ~]# systemctl restart nginx 4.配置fstcgi支持https的请求(nginx向PHP转发时接收带有HTTPS的字段) [root@LNMP ~]# vim /etc/nginx/conf.d/wp.conf
点击查看代码
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字段
        }
}

[root@LNMP ~]# systemctl restart nginx 5.WEB配置相同 6.hosts解析 10.0.0.11 www.wp.com 六、https参数优化 ssl_session_cache shared:SSL:10m; #在建立完ssl握手后如果断开连接,在 session_timeout时间内再次连接,是不需要再次获取公钥建立握手的,可以复用之前的连接 ssl_session_timeout 1440m; #ssl连接断开后的超时时间 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #配置加密协议 ssl_protocols TLSv1.2 TLSv1.3; #使用TLS版本协议 ssl_prefer_server_ciphers on; #nginx决定使用哪些协议与浏览器通信
posted on 2025-12-12 15:35    阅读(0)  评论(0)    收藏  举报