博客托管迁移、HTTPS 加持-续

2016-07-11

原来写的 博客托管迁移、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 里面再加个配置。