Enable https support for jnan.org

最近因为工作方面的需要,探索了一下https实施的步骤。顺便用本站做了一次练手,在此记录一下。

https证书有很多颁发者,处于费用的考虑(毕竟这个博客已经从日更变为月更到现在是年更),没必要每年花费个几百上千的去买证书,于是就是用了Let’s Encrypt提供的免费https证书。

证书的生成在Let’s Encrypt网站上有详细的步骤说明。对于绝大多数的主机,只需要在 https://certbot.eff.org/ 上选择操作系统以及http服务器的类型,就可以通过脚本一键生成证书了。

在服务器上通过 wget https://dl.eff.org/certbot-auto 下载证书生成脚本后,执行 chmod a+x certbot-auto ,然后通过 ./certbot-auto 就可以一键生成某域名的ssl证书:

1
certbot-auto certonly --webroot -w /path/to/jnan.org/ -d jnan.org -d www.jnan.org

上述命令开始运行后,会先安装一些系统依赖。然后会自动开始生成证书。在我的vps上生成证书的时候,报了一个错误:

1
2
Creating virtual environment...
./certbot-auto: line 666: virtualenv: command not found

简单搜索了一下, virtualenv 是python的一个库,于是直接yum装上:

1
yum install python-virtualenv

然后再次运行 certbot-auto ,系统开始安装相关的python依赖。可能是因为 的原因,这一步时间很长。接下来,会提示输入邮箱,作为更新证书时使用的凭据;选择是否接受服务协议;选择是否接收eff.org的邮件列表。

这里有一点需要注意, certbot-auto 在生成证书的过程中,会对当前站点的 /.well-konwn/acme-challenge/ 对应的目录下写入随机文件以验证站点合法性。所以可能需要配置类似nginx/apache等web server,使得该url可以被正确访问。

当脚本运行完成后,显示出 Congratulations! 的字样,代表证书已经生成完毕。在系统提示的路径下存储。接下来,在web server里配置好证书,就可以通过https来访问网站了。

Let’s Encrypt生成的证书有效期是3个月。 certbot-auto 提供了renew功能,在cron-tab里增加一个定时任务让其更新证书即可:

1
0 0 1 */3 * bash /path/to/certbot-auto renew

后记:
当初编译nginx的时候没加参数 --with-http_ssl_module ,只能老老实实重新编译一次了……

加载评论框需要翻墙