Linux-HTTPS
HTTPS
一、概述
基于http协议,传输的时候进行加密
如果不使用https,数据传输都是明文的
应用场景:
目前大部分都是使用https加密
企业想使用http 2.0 基于https
部署https加密的流程
- 申请域名
- 根据域名申请https证书(私钥与公钥(ca证书)
- 进行配置web/lb
证书类型
二、Https加密流程与http跳转https
温馨提示
申请的https证书与网站域名一致,才能正常使用,否则用户访问会有警告与提示
[root@web01 ~]# mkdir -p /etc/nginx/ssl_keys/ [root@web01 ~]# unzip 8458094_ssl.yuanliunx.cn_nginx.zip -d /etc/nginx/ssl_keys Archive: 8458094_ssl.yuanliunx.cn_nginx.zip Aliyun Certificate Download inflating: /etc/nginx/ssl_keys/8458094_ssl.yuanliunx.cn.pem inflating: /etc/nginx/ssl_keys/8458094_ssl.yuanliunx.cn.key [root@web01 ~]# cd /etc/nginx/ssl_keys/ [root@web01 /etc/nginx/ssl_keys]# ll total 8 -rw-r--r-- 1 root root 1679 Feb 20 15:01 8458094_ssl.yuanliunx.cn.key -rw-r--r-- 1 root root 3809 Feb 20 15:01 8458094_ssl.yuanliunx.cn.pem [root@web01 /etc/nginx/ssl_keys] rename 8458094_ '' * #修改名字,方便后期升级,替换 [root@web01 /etc/nginx/ssl_keys]# ll total 8 -rw-r--r-- 1 root root 1679 Feb 20 15:01 ssl.yuanliunx.cn.key -rw-r--r-- 1 root root 3809 Feb 20 15:01 ssl.yuanliunx.cn.pem [root@web01 /etc/nginx/conf.d]# cat ssl.yuanliunx.cn.conf server{ listen 80; server_name ssl.yuanliunx.cn; return 302 https://ssl.yuanliunx.cn$request_uri; #设置跳转 #rewrite ^(.*)$ https://ssl.yuanliunx.cn$1 permanent; } server { listen 443 ssl; #修改这一行,记得加ssl server_name ssl.yuanliunx.cn ; root /app/code/ssl; error_log /var/log/nginx/ssl-error.log notice; access_log /var/log/nginx/ssl-access.log main; #ssl key 增加证书 ssl_certificate /etc/nginx/ssl_keys/ssl.yuanliunx.cn.pem; ssl_certificate_key /etc/nginx/ssl_keys/ssl.yuanliunx.cn.key; location / { index index.html; } }
三、命令行创建https证书
#创建私钥 openssl genrsa -idea -out server.key 2048 #根据私钥创建 证书 openssl req -days 36500 -x509 -sha256 -nodes -newkeyrsa:2048 -keyout server.key -out server.crt
四、网站集群https配置
[root@lb01 ~]# cat /etc/nginx/conf.d/ssl.yuanliunx.cn.conf upstream ssl_pools{ server 10.0.0.7:443; #修改为443 } server { listen 80; server_name ssl.yuanliunx.cn; return 302 https://ssl.yuanliunx.cn$request_uri; #跳转修改为https } server { listen 443 ssl; #修改为443 server_name ssl.yuanliunx.cn; ssl_certificate /etc/nginx/ssl_keys/ssl.yuanliunx.cn.pem; #添加证书 ssl_certificate_key /etc/nginx/ssl_keys/ssl.yuanliunx.cn.key; #添加证书 error_log /var/log/nginx/ssl.cn-error.log notice; access_log /var/log/nginx/ssl.cn-access.log main; location / { proxy_pass https://ssl_pools; #注意这里是https proxy_set_header Host $http_host; proxy_set_header X-Real-Ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } [root@web01 ~]# cat /etc/nginx/conf.d/ssl.yuanliunx.cn.conf server{ listen 80; server_name ssl.yuanliunx.cn; return 302 https://ssl.yuanliunx.cn$request_uri; #rewrite ^(.*)$ https://ssl.yuanliunx.cn$1 permanent; } server { listen 443 ssl; server_name ssl.yuanliunx.cn ; root /app/code/ssl; error_log /var/log/nginx/ssl-error.log notice; access_log /var/log/nginx/ssl-access.log main; #ssl key ssl_certificate /etc/nginx/ssl_keys/ssl.yuanliunx.cn.pem; ssl_certificate_key /etc/nginx/ssl_keys/ssl.yuanliunx.cn.key; location / { index index.html; } }
温馨提示:
php配置https要加上
fastcgi_param HTTPS on; #前面部分的请求是https
五、https优化与监控
1.优化
https === http over tls
server { listen 443 ssl; keepalive_timeout 70; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定ssl加密协议的版本 ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5; #加密算法.需要排除算法 排除null空算法, md5算法 ssl_certificate /usr/local/nginx/conf/cert.pem; ssl_certificate_key /usr/local/nginx/conf/cert.key; #设置https 会话缓存 ssl_session_cache shared:SSL:10m; #超时时间 10分钟 ssl_session_timeout 10m; }
2.监控
过期时间.
流程:
通过命令获取证书的过期日期
与当前日期对比(30天之前)
获得剩余的时间
[root@web03 ~]# curl -vL https://www.baidu.com |& grep 'expire date' * expire date: Aug 06 05:16:01 2023 GMT [root@web03 ~]# curl -vL https://www.baidu.com |& grep 'expire date'|awk -F ': ' '{print $2}'
温馨提示:
| 只传输正确输出
|& 表示把管道前面标准输出(正确)和标准错误输出 都传递给后面的命令.
[root@web03 ~]# vim /server/scripts/check_ssl.sh #!/bin/bash #author:wh #desc:检查证书的到期时间 url=https://www.baidu.com #获取过期时间 expire_date=`curl -vL ${url} |& grep 'expire date'|awk -F ': ' '{print $2}'` #格式化过期时间 expire_date_day=`date -d "${expire_date}" +%F` #过期时间装换为秒 expire_date_second=`date -d "${expire_date}" +%s` #现在的时间装换为秒 date_now_second=`date +%s` #过期的时间 expire_days=`echo "(${expire_date_second}-${date_now_second})/60/60/24" |bc` echo "网站${url}过期时间是:${expire_date_day}" echo "网站${url}证书过期倒计时:${expire_days}天"
本文作者:wh459086748
本文链接:https://www.cnblogs.com/world-of-yuan/p/17145969.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步