Linux-HTTPS

HTTPS

一、概述

基于http协议,传输的时候进行加密

如果不使用https,数据传输都是明文的

应用场景:

目前大部分都是使用https加密

企业想使用http 2.0 基于https

部署https加密的流程

  1. 申请域名
  2. 根据域名申请https证书(私钥与公钥(ca证书)
  3. 进行配置web/lb

证书类型

image

二、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 中国大陆许可协议进行许可。

posted @   wh459086748  阅读(217)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起