以前二级域名是使用Let’s Encrypt签的,很方便。

主域名是在腾讯云免费签的,快到期了,正好Let’s Encrypt支持了泛域名证书(Wildcard Certificates Coming January 2018),干脆就一起签了,方便省事。

使用的工具是acme.sh,基础操作简单,文档详细。

周三上午在公司花了二十来分钟,把域名解析放到阿里云,生成证书,然后配置nginx。可以看到,现在博客的SSL证书已切换了。

关于这个https相关配置、优化跟安全方面的东西,我在imququ的博客上学到了很多,这里推荐一下。

因为我要把NS转到阿里云,所以这里使用Dns验证方法进行验证。

安装、更新:见How to install

Dns验证:

1
acme.sh --issue -d 'example.com' -d '*.example.com' --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --debug 2

然后就会出现提示:

1
2
3
4
5
6
7
Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

在域名解析后台加入对应这两条txt记录后使用 –renew 开始验证。

1
acme.sh --renew -d 'example.com' -d '*.example.com'

验证成功后,就会在 ~/username/.acme.sh/下生成example.com文件夹,下面放着证书跟key。验证的时候会间隔几秒钟重复验证,这个就看域名解析速度。

证书到这就完成了,acme.sh会自动更新证书并且在更新完后可以重启web服务器,这要使用 –reloadcmd

1
acme.sh --install-cert -d 'example.com' -d '*.example.com' --key-file ~/yourfolder/example.key --fullchain-file ~/yourfolder/example.crt --reloadcmd "sudo /usr/sbin/service nginx force-reload"

还有个问题,这里重启web服务器可能需要用到sudo命令,sudo不配置的话默认是需要密码的,在/etc/sudoers里面配置一下。

1
username    ALL=(root) NOPASSWD:ALL

大概就是这样。

以前我不想写这些工具应用类的博客,感觉很浪费时间,没有价值,现在想想,记录下自己工作或者生活中遇到的问题,这本就是有意义的。