在第一篇日志里就说,要抽空加上小绿锁。今天抽了个小空,轻松加上,很容易。
主机环境:Centos 6.5
软件环境:jekyll 3.1.1,Nginx,搬瓦工内置SS
由于很早就在主机上跑SS,而默认第一个SS账号使用443端口,与TLS的默认端口重复,所以先要把SS的端口换了。
打开/etc/shadowsocks.json
,把其中使用了443端口的账号随便换到其他端口去。比如,本来是
{
"server": "0.0.0.0",
"local_address": "127.0.0.1",
"local_port": 1080,
"port_password": {
"443": "password"
},
"timeout":300,
"method":"aes-256-cfb"
}
改成
{
"server": "0.0.0.0",
"local_address": "127.0.0.1",
"local_port": 1080,
"port_password": {
"8999": "password"
},
"timeout":300,
"method":"aes-256-cfb"
}
在Let's encrypt的网站找到Get started的页面,VPS可以控制shell所以在这个页面使用推荐的certbot来做配置。
然而按照certbot的教学,运行./path/to/certbot-auto certonly
使用交互式方式完成配置在我这行不通,报错说找不到nginx的html发布目录(也可能是我设置的比较奇葩?!),于是按照命令行的方式手工给配置。
- 进入certbot-auto的安装目录
- 运行配置如下
sudo certbot-auto certonly --webroot --webroot-path /home/deploy/your_site/_site --renew-by-default --email [email protected] --text --agree-tos -d example.com
其中_site
为html发布目录,example.com
为使用的域名
运行完成后在/etc/letsencrypt/live/example.com
得到证书和私钥等一系列文件。
不过我的Nginx目录结构不大一样,默认HTTP配置文件在/etc/nginx/conf.d/default.conf
,而TLS的内容在/etc/nginx/conf.d/ssl.conf
中,解除#的注释,按文中修改就好。
至于配置里的ssl_dhparam /home/deploy/dhparams.pem;
使用更好的素数,有兴趣就加上。素数生成在certbot同一目录(似乎)。
根据certbot的说法,由于letsencrypt的证书有效期是每三个月,所以忘性大的人最好能设成自动更新。
使用
$ ./path/to/certbot-auto renew --dry-run
测试renew更新后,把renew加到cron计划任务中,方法是:
$ crontab -e
建立一个新的crontab,按照如下格式填写
# validate TLS certificate and try renew every 12 hours
# set time at 8:20 am/pm
20 8 * * * ./path/to/certbot-auto renew --quiet
20 20 * * * ./path/to/certbot-auto renew --quiet
意思是每天早晚8点20运行命令。然后:w
存盘就好。
存储的设置在/var/spool/cron/
下打开用户名的文件可以看到。
重启SS和Nginx
# ssserver -c /etc/shadowsocks.json -d restart
# nginx -s reload