免费SSL证书 : Let’s Encrypt安装使用教程: Nginx配置SSL

一 、快速获取Let’s Encrypt免费SSL证书

首先确保你的系统已安装git,然后再进行以下操作:

在这里只介绍常用的两个获取证书的模式

Standalone

使用独立模式进行自动验证,需要在 目标服务器 上运行 Let’s Encrypt 客户端,并指定 certonly 和 –standalone参数。本模式需要绑定 80 或 443 端口进行域名验证,所以如果服务器上已有web server运行并侦听这2个端口,则需要先关闭web server。

运行命令:

1
./letsencrypt-auto certonly --standalone  -d yourwebsite.com --email youremail.com

Webroot

如果 目标服务器 已有web server运行,并且不能够关闭服务来获取和安装证书,可以使用 Webroot plugin。在运行 Let’s Encrypt 客户端时指定 certonly和 –webroot 参数,并使用 –webroot-path 或-w 参数来指定 webroot 目录,比如 –webroot-path /web/www

运行命令:

1
2
./letsencrypt-auto certonly --standalone  -d yourwebsite.com --email youremail.com
./letsencrypt-auto certonly --webroot --webroot-path /web/www -d yourwebsite.com --agree-tos --email youremail

以下是使用独立模式来获取证书的:

1
2
3
git clone https://github.com/letsencrypt/letsencrypt 
cd letsencrypt
./letsencrypt-auto certonly --standalone -d yourwebsite.com --email youremail.com

上述命令中yourwebsite.com为你的域名,如果有二级域名则在后面继续加 -d hs.yourwebsite.com , --email 参数后面需要填写你的邮箱。如果不写邮箱这个参数,在安装过程中会提示让你输入你的邮箱(邮箱也是很重要的,在后期证书到期并且没有自动续期,会给你发邮件提示的)。

可能会出现错误:

1
OSError: Command /opt/eff.org/certbot/venv/bin/python2.7 - setuptools pkg_resources pip wheel failed with error code 2

通过搜索,找到了原因是说,系统安装了多个版本的python,那么怎么解决呢?
解决方法:

1
2
apt-get purge python-virtualenv python3-virtualenv virtualenv
pip install virtualenv

然后再次执行ssl证书生成命令:

1
./letsencrypt-auto certonly --standalone  -d yourwebsite.com --email youremail.com

正确之后会出现图形界面输入邮箱、条款、等信息(略…)

当出现以下信息时,则证明你的证书已申请成功:

1
2
3
4
5
6
7
8
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/yourwebsite.com/fullchain.pem. Your cert will
expire on 2017-12-26. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- If you 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/你的域名/ 目录下(记得备份下)。
文件介绍:

文件名 内容
cert.pem 服务端证书
chain.pem 浏览器需要的所有证书,但不包括服务端证书,比如根证书和中间证书
fullchain.pem 包括了cert.pem和chain.pem的内容
privkey.pem 证书的私钥

在这里我们只需要两个文件 fullchain.pemprivkey.pem

在nginx配置文件的server中增加下面代码:

1
2
3
4
5
6
7
8
server {
listen 443 ssl;
listen [::]:443 ssl ipv6only=on;
root /wwwroot/hs/hs.yourwebsite.org;
ssl on;
ssl_certificate /etc/letsencrypt/live/hs.yourwebsite.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hs.yourwebsite.org/privkey.pem;
}
1
2
ssl_certificate /etc/letsencrypt/live/hs.yourwebsite.org/fullchain.pem;  #对应位置要写对
ssl_certificate_key /etc/letsencrypt/live/hs.yourwebsite.org/privkey.pem;#对应位置要写对

重启nginx

1
service nginx start

打开网站:https://your.website.com 如果看到浏览器的绿色标志,恭喜你设置成功!

三、 更新以及自动更新

手动更新:

./letsencrypt-auto renew

自动更新:

首先创建脚本任务,保存目录为你要想保存到的目录下面,创建 /etc/letsssl/restartup.sh 在这里我把脚本文件存放在了/etc/letsssl/目录下。

脚本代码:

1
2
3
4
5
6
7
#!/bin/sh
# This script renews all the Let's Encrypt certificates with a validity < 30 days
if ! /letsencrypt/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
echo Automated renewal failed:
service nginx reload;
exit 1;
fi

增加权限:
chmod +x 设定的脚本.sh;
创建定时任务:
1
2
crontab -e
0 0 3 * * /bin/sh /etc/letsssl/restartup.sh >/dev/null 2>&1 & #每月1号凌晨3点执行

四、撤销证书

执行以下代码就可直接撤销证书:

1
./letsencrypt-auto revoke --cert-path /etc/letsencrypt/live/yourwebsite.com/cert.pem

本文结束感谢您的阅读
0%