为站点开启免费的HTTPS

为站点开启免费的HTTPS

Let’s Encrypt是目前比较流行的免费的CA证书提供商,certbot是Let’s Encrypt推荐的证书生成工具,之前certbot只有脚本的方式,现在有了官方编译的二进制包,所以重新写一份如何用certbot生成免费证书(以Debian8为例)

前提

certbot提供了多种模式来生成证书,比如standlone,webroot,推荐使用webroot方式。
certbot会在网站的根目录生成验证文件,然后通过http请求来验证生成文件的合法性,所以必须保证当前网站的http是可以正常访问的。

安装certbot

1
$ sudo apt-get install certbot -t jessie-backports

生成证书

1
$ certbot certonly --webroot

如果是第一次使用的话,还需要输入email验证信息,选择同意之后,按照提示输入域名网站的根目录即可。
证书生成完成之后,会提示出证书生成的路径。

配置HTTPS

demo如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 443;
server_name your-domain-name;
ssl on;
root /home/www/xxxx;
index index.html index.htm;
ssl_certificate certbot生成的路径;
ssl_certificate_key certbot生成的路径;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}

定时更新证书

因为Let’s Encrypt证书只有90天有效期,所以需要使用crontab定期更新一下

1
$ crontab -e

在最下面添加如下命令

1
* * 80 * * certbot renew