原来写的 博客托管迁移、HTTPS 加持 没写全,里面的步骤我也没怎么明白,昨天想在 VPS 上装个 Gogs 代码托管用一下的,结果没折腾成功。虽然没把 Nginx 搞坏,但还是不爽,直接重装系统,静态网站配置起来也很快,配置下系统然后再配置 Nginx 就行了,到 HTTPS 这儿又有问题了,搞了好一会才明白。
Let’s Encrypt 配置 先按照小众软件的 在 Nginx 上使用 Let’s Encrypt 加密(HTTPS)你的网站[简明教程] ,先直接把网站的 HTTPS 跑起来。
不过运行 Let’s Encrypt 的命令应该是:
1 /letsencrypt-auto certonly
没有 –standalone
这个参数,是在图形界面里面选择这个选项。
还有一点是 ssl_ciphers
不对,要参照这个链接 的参数。
Nginx 配置好之后应该是能在 Chrome 里面看到绿色的小锁。
Let’s Encrypt 续签 Let’s Encrypt 证书只有九十天的有效期,需要续签,就有各种各样的续签脚本,小众软件里面的续签方法我是没试成功。
用 一个快速获取/更新 Let’s encrypt 证书的 shell script 是搞定了。
运行脚本可能会有权限问题,把 Nginx 里面的 ssl_certificate
ssl_certificate_key
改掉就行了,加入 cron
定时任务,搞定。
最后附上 Nginx 的配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 server { # the port your site will be served on listen 443 ssl; # the domain name it will serve for server_name breakwire.me; # substitute your machine's IP address or FQDN # Let’s Encrypt ssl on; ssl_certificate /home/chen/breakwire.chained.crt; ssl_certificate_key /home/chen/breakwire.me.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"; allow all; # location location / { root /home/chen/BreakWire/; index index.html; } # logs access_log /home/chen/nginx-log/access.log; error_log /home/chen/nginx-log/error.log; # gzip gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 4; gzip_types text/plain application/x-javascript text/css application/xml text/javascript image/jpeg image/png; gzip_disable "MSIE [1-6]\."; } server { listen 80; server_name breakwire.me; return 301 https://$host$request_uri; }
HTTP 重定向至 HTTPS 这步照着小众软件里面的步骤做就搞定了,就是在 Nginx 里面再加个配置。