Contents
  1. 1. 环境
  2. 2. 安装Certbot客户端
  3. 3. 获取SSL证书
  4. 4. 配置Nginx

Let’s Encrypt 是一个免费开源的SSL项目,由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起。在一定程度上Let’s Encrypt推进了国内HTTPS的进程。
CertBot 是基于Let’s Encrypt 的简化部署解决方案。另外acme也是也不不错的解决方案。
下面简单介绍一下使用Certbot部署Let’s Encrypt。

环境

debian 8 X64
nginx

本文以nginx为例介绍。

安装Certbot客户端

Certbot官网:https://certbot.eff.org/

debian 8 的默认仓库是没有Certbot的,需要依赖第三方仓库Jessie backports;执行以下命令安装仓库;

1
2
echo 'deb http://ftp.debian.org/debian jessie-backports main'\
| sudo tee /etc/apt/sources.list.d/backports.list

执行完后,更新apt包管理工具
sudo apt-get update
接下来就可以安装certbot了,执行以下命令
sudo apt-get install certbot

获取SSL证书

let’S Encrypt 支持两种获取证书的方式,Webroot和Standalone,Standalone需要80或443端口没有占用,往往需要暂停nginx服务,所以我们一般使用Webroot方式。
首先需要配置一个nginx服务,添加以下配置,重启nginx:

1
2
3
location ~ /.well-known {
allow all;
}

然后执行

1
2
sudo certbot certonly -a webroot \
--webroot-path=/var/www/html -d example.com -d www.example.com

根据提示填写即可。
/etc/letsencrypt/live/目录下就已经生成了你的证书文件。
为了进一步提高安全性,需要dhparam.pem文件,生成命令如下:

1
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

配置Nginx

SSL部分nginx 配置如下:

1
2
3
4
5
6
7
ssl_certificate      /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

80端口配置自动Https

1
return 301 https://$server_name$request_uri;

最后,测试证书更新:certbot renew --dry-run
如果没有返回错误信息,则说明配置正常,可以配置自动更新了。

配置自动更新:

1
2
30 2 * * * /usr/bin/certbot renew --noninteractive \
--renew-hook "/bin/systemctl reload nginx" >> /var/log/le-renew.log
Contents
  1. 1. 环境
  2. 2. 安装Certbot客户端
  3. 3. 获取SSL证书
  4. 4. 配置Nginx