Let’s Encrypt – 免费的Https证书 使用总结

目录 码农

Let’s Encrypt 是一个新型的CA认证方式,简单,易得地获取 TLS/SSL 证书,能够提供 https 的web服务器加密传输。

nginx-letsencrypt

本次使用是在 Ubuntu Server 14.04 上,对web端到nginx之间进行加密,nginx到内网的Tomcat/Apache服务器不进行加密(也可以进行,但是个人觉得没有必要)。

Step 1 — 安装 Let’s Encrypt :

要想使用Let’s Encrypt,要先在服务器上安装Let’s Encrypt的客户端,现在更名为certbot,从他们的官方Github(https://github.com/certbot/certbot)上获取并安装。

安装 Git 和 bc :

sudo apt-get update;
sudo apt-get -y install git bc

安装客户端certbot:

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
cd /opt/letsencrypt
./letsencrypt-auto --help all

将会进行安装,过程中可能会遇到我遇到的错误:no response “Installing Python packages”   FUCK GFW! 如果遇到其他错误,可以google一下,实在不行就去创建 一个issue。

至此,安装完成。

Step 2 — 生成证书 :

cd /opt/letsencrypt
./letsencrypt-auto certonly -d example.com -d www.example.com

certonly 有webroot参数,是限定在某个目录内,我们这里只需要把需要和带www.的二级域名设定,运行上面命令后,会让你输入 公司信息、你的邮箱、密码等信息。如果当前你服务器上 80端口有运行的程序,要先关闭掉。

运行完成后会出现:Output:

IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to sammy@digitalocean.com
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your
   cert will expire on 2016-03-15. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

这样的内容表示证书已经生成!!会提示里保存的位置,你可以进入查看了(这里是/etc/letsencrypt/live/example.com/fullchain.pem)
  • cert.pem: Your domain’s certificate
  • chain.pem: The Let’s Encrypt chain certificate
  • fullchain.pem: cert.pem and chain.pem combined
  • privkey.pem: Your certificate’s private key

好了,证书已经生成,下面我们将进行配置 nginx 。

Step 3 — 配置nginx :

在nginx的server配置中:

 listen 443 ssl;
 server_name www.example.com;
 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

这样,nginx就会在 https 端口 443 中监听了,在下面依然可以设置你将代理的内网服务器。配置成功后,打开你的网站查看吧。(当然最好做一个 http 的301跳转到https)

server {
 listen 80;
 server_name example.com www.example.com;
 return 301 https://www.example.com$request_uri;
}

Step 4 — renew证书 :

上面已经配置完成,但是 Let’s Encrypt 的证书有效期只有三个月,这就意味着三个月后就要更新一次。更新命令:

/opt/letsencrypt/letsencrypt-auto renew

这个命令会自动检查证书剩余时间,如果时间少于30天了,就会自动更新,为了让他自动进行更新,我们可以使用 crontab 来进行定时任务执行这个命令:

sudo crontab -e

然后在命令中输入(每半个月进行一次):

30 2 1,15 * * /etc/init.d/nginx stop
30 2 1,15 * * /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
35 2 1,15 * * /etc/init.d/nginx reload

这个和 QuartZ 和 Spring-task 类似:

crontab0511141848

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

More — 更新 Let’s Encrypt:

cd /opt/letsencrypt
sudo git pull

 

 

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注