ubuntu环境下 nginx配置https全流程
·
前提:1.nginx已安装好
2.本文假设nginx的安装目录为:/etc/nginx/,可自定义修改为自己的地址
3.为自动续签方便,生成时不需要输入密码
优点:直接完全无密码、自动续签、不用任何干预的版本。
- 创建目录
rm -rf /etc/nginx/ssl mkdir -p /etc/nginx/ssl/ca mkdir -p /etc/nginx/ssl/certs cd /etc/nginx/ssl/ca - 生成无密码私有 CA
openssl genrsa -out ca.key 4096 openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt -subj "/C=CN/ST=Internal/L=Internal/O=Internal/CN=10.21.0.70" - 创建无密码自动续签脚本
vi /etc/nginx/ssl/renew_cert.sh粘贴下面全部内容,换下ip:
#!/bin/bash DOMAIN="这里是你的ip或域名" #有效期 CERT_DAYS=90 CA_KEY="/etc/nginx/ssl/ca/ca.key" CA_CERT="/etc/nginx/ssl/ca/ca.crt" SERVER_KEY="/etc/nginx/ssl/certs/server.key" SERVER_CERT="/etc/nginx/ssl/certs/server.crt" CSR_FILE="/etc/nginx/ssl/certs/server.csr" # 生成服务器密钥 openssl genrsa -out $SERVER_KEY 2048 # 生成证书请求 openssl req -new -key $SERVER_KEY -out $CSR_FILE -subj "/CN=$DOMAIN" # 签发证书(无密码) openssl x509 -req -in $CSR_FILE -CA $CA_CERT -CAkey $CA_KEY -CAcreateserial \ -out $SERVER_CERT -days $CERT_DAYS -sha256 # 重载 nginx nginx -t && systemctl reload nginx echo "[$(date '+%Y-%m-%d %H:%M:%S')] 证书自动更新完成" >> /var/log/nginx_cert_renew.log赋予权限:
chmod +x /etc/nginx/ssl/renew_cert.sh运行脚本,首次生成证书:
/etc/nginx/ssl/renew_cert.sh - Nginx HTTPS 配置
server { listen 这里是端口 ssl; server_name 这里是你的ip或域名; ssl_certificate /etc/nginx/ssl/certs/server.crt; ssl_certificate_key /etc/nginx/ssl/certs/server.key; ssl_trusted_certificate /etc/nginx/ssl/ca/ca.crt; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # 这里是你的网站目录,按实际修改 root /usr/share/nginx/html; index index.html; }测试并重启:
nginx -t systemctl restart nginx - 每月自动续签(无人值守)
运行定时任务:
crontab -e
添加:
0 3 1 * * /etc/nginx/ssl/renew_cert.sh >> /var/log/nginx_cert_renew.log 2>&1
更多推荐



所有评论(0)