如果你的站点对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不分明本人网站根目录时这样生成

#先停用nginxsudo nignx -s stop#再生成证书,须要依据本人的域名批改certbot certonly --standalone -d domain.com -d www.domian.com

2.2晓得网站根目录时这样生成

#须要依据本人的域名批改,这里的根目录是 /var/www/domaincertbot 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 -ecrontab -e#输出i,进入插入模式,按如下格局写上更新命令,意思是每个月1号凌晨3点更新0 0 3 * * certbot renew --force-renew --renew-hook "nginx -s reload"#按住shfit,输出:wq

OK功败垂成! 原文链接:https://www.helloque.site/art...