如果你的站点对 HTTPS 有强需要——出于平安须要或者须要做微信小程序(要求必须 HTTPS),同时你又不想一年花个大几千购买付费 SSL 证书,那么应用 Let’s Encrypt 颁发的收费 SSL 证书可能就是一个很棒的抉择。上面来说说如何装置应用 Let’s Encrypt,并配置 nginx,达到主动续签永恒收费。
一、筹备工作
装置前,你须要凋谢 443 端口
# 查看凋谢端口
firewall-cmd --zone=public --list-ports
#80/tcp 3306/tcp
#没有 443 时,增加 443 端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
#重启能力失效,增加完重启
firewall-cmd --reload
#再次查看凋谢端口,发现曾经有了 443,筹备工作就实现了
firewall-cmd --zone=public --list-ports
#80/tcp 3306/tcp 443/tcp
二、装置配置
1. 装置 cerbot。cerbot 是 let’s Encrypt 举荐的治理客户端,能够主动续签
yum install certbot -y
2. 生成证书
2.1 不分明本人网站根目录时这样生成
# 先停用 nginx
sudo nignx -s stop
#再生成证书,须要依据本人的域名批改
certbot certonly --standalone -d domain.com -d www.domian.com
2.2 晓得网站根目录时这样生成
# 须要依据本人的域名批改,这里的根目录是 /var/www/domain
certbot certonly --webroot -w /var/www/domain -d domain.com -d www.domain.com
不出意外,证书就生成了,个别会放在 /etc/letsencrypt/live 目录内
3. 配置 nginx
# 将 listen 80 局部按本人的域名做如下批改,去掉 location / 及 location /api/ 等局部
server {
listen 80;
listen [::]:80;
server_name www.domain.com domain.com;
add_header Strict-Transport-Security max-age=15768000;
return 301 https://$server_name$request_uri; #重定向到 https
}
#减少一个 listen 443,按本人域名做如下批改。将原 listen 80 内的 location / 及 location /api/ 等局部 copy 过去
server {
listen 443 ssl http2;
server_name www.domain.com domain.com;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
root /var/www/domain;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-RC4-SHA:!ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:HIGH:!RC4-SHA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!CBC:!EDH:!kEDH:!PSK:!SRP:!kECDH;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 60m;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Nginx-Proxy true;
proxy_cache_bypass $http_upgrade;
proxy_pass http://nuxtapp; #反向代理 nuxt
}
location /api/ {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
}
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html { }
error_page 500 502 503 504 /50x.html;
location = /50x.html {}}
5. 重启 nginx
sudo nginx -s reload
刷新页面,https 曾经功效了
6. 还差一步,Let’s Encrypt 默认 3 个月过期,须要咱们设置 cerbot 客户端,让其自动更新证书,这里须要用到 crontab
# 终端输出 crontab -e
crontab -e
#输出 i,进入插入模式,按如下格局写上更新命令,意思是每个月 1 号凌晨 3 点更新
0 0 3 * * certbot renew --force-renew --renew-hook "nginx -s reload"
#按住 shfit,输出
:wq
OK 功败垂成!原文链接:https://www.helloque.site/art…