Let’s Encrypt的证书签发与配置

本教程没有用到任何脚本进行配置Let’s Encrypt的证书,对于新手熟悉一下https的配置也是有帮助的。教程中的出现的xiaokyun.com域名需要替换成你要签发的域名。另外教程是在阿里云ECS上实践出来后才写的,跟着教程走就可以签发成功。

签发Let’s Encrypt证书

进入有root权限的终端,先停止nginx运行(必做)

CentOS 6.x:

service nginx stop

CentOS 7.x:

systemctl stop nginx

然后获取Let’s Encrypt的源代码

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

接着给你的网站签发证书

./letsencrypt-auto certonly --standalone --email i@xiaokyun.com -d xiaokyun.com -d www.xiaokyun.com

!注!意!

(from https://pypi.python.org/simple/python2-pythondialog/) failed: <urlopen error [Errno -2] Name or service not known>

如果出现这个报错,则需要进行下面的配置

mv /etc/resolv.conf /etc/resolv.conf.backup && vim /etc/resolv.conf

打开resolv.conf文件之后里面应该是什么都没有的

i 进入编辑模式,复制下面的内容进去,保存退出

nameserver 223.5.5.5
nameserver 8.8.8.8

然后重新执行,给你的网站签发证书

./letsencrypt-auto certonly --standalone --email i@xiaokyun.com -d xiaokyun.com -d www.xiaokyun.com

这个主要是修复服务器上的DNS解析失败的问题


完成上面的操作,Let’s Encrypt就已经给你的网站签发证书了

可以输入下面命令查看

ls /etc/letsencrypt/live/xiaokyun.com(这里的域名是你的签发证书域名)

会发现里面有四个文件

cert.pem  chain.pem  fullchain.pem  privkey.pem

前两个是给Apache用的,后两个才是给Nginx用的

配置Nginx

这里默认你已经开启了https,只是替换证书而已···

打开网站所对应的Nginx的conf配置文件

假设我的配置文件是在 /usr/local/nginx/conf/vhost 的目录

vim /usr/local/nginx/conf/vhost/xiaokyun.com.conf

打开后,按 i 进入编辑模式,找到

ssl_certificate .............;
ssl_certificate_key ............;

修改为

ssl_certificate /etc/letsencrypt/live/xiaokyun.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xiaokyun.com/privkey.pem;

不要忘了启动Nginx

CentOS 6.x:

service nginx start

CentOS 7.x:

systemctl start nginx

至此,Let’s Encrypt的证书签发与配置已经完成,刷新你的网站,就能看到绿绿的小锁

自动续时

一般地,Let’s Encrypt的证书有效期只有90天,所以需要设置一个自动续时的任务

先安装crontabs,一般情况下是提示已经安装

yum -y install crontabs

然后

crontab -e

添加下面的内容在新的一行

0 0 1 * * ./letsencrypt-auto certonly --renew-by-default --email i@xiaokyun.com -d xiaokyun.com -d www.xiaokyun.com

接着,根据自己服务器的系统版本在后面再填一行

CentOS 6.x:

0 1 1 * * service nginx reload

CentOS 7.x:

0 1 1 * * systemctl reload nginx

添加完成后,保存退出,查看定时任务列表

crontab -l

查看显示成功追加了两条定时任务···

这样,服务器就会在每个月1号自动为你的Let’s Encrypt证书续签了。

Let’s Encrypt免费SSL证书续期

1、Let’s Encrypt免费SSL证书有效期是90天,也就是每三个月你就得续期一次。采用官方的方法获取到的免费SSL证书,你不需要更改Apache和Nginx配置代码,执行以下代码即可自动替换证书为新的(注意修改域名和邮箱):

./letsencrypt-auto certonly –renew-by-default –email admin@gmail.com -d xiaokyun.com -d www.xiaokyun.com

2、采用上面脚本快速获取Let’s Encrypt免费SSL证书的,在90天内再次执行命令即可:

./letsencrypt.sh letsencrypt.conf

3、cron 定时任务。每个月自动更新一次证书,可以在脚本最后加入 service nginx reload等重新加载服务。

0 0 1 * * /etc/nginx/certs/letsencrypt.sh /etc/nginx/certs/letsencrypt.conf >> /var/log/lets-encrypt.log 2>&1

Let’s Encrypt SSL证书一键脚本

1、利用脚本快速获取Let’s Encrypt SSL证书,调用 acme_tiny.py 认证、获取、更新证书,不需要额外的依赖。

项目主页:https://github.com/xdtianyu/scripts/tree/master/lets-encrypt

2、下载到本地:

wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh
chmod +x letsencrypt.sh

Let’s Encrypt下载脚本

3、配置文件。只需要修改 DOMAIN_KEY DOMAIN_DIR DOMAINS 为你自己的信息

ACCOUNT_KEY=”letsencrypt-account.key”
DOMAIN_KEY=”xiaokyun.com.key”
DOMAIN_DIR=”/var/www/xiaokyun.com”
DOMAINS=”DNS:xiaokyun.com,DNS:www.xiaokyun.com”

4、已经绑定域名到 /var/www/www.xiaokyun.com 目录,即通过 http://xiaokyun.com 和 http://www.xiaokyun.com 可以访问到 /var/www/xiaokyun.com目录,用于域名的验证。

Let’s Encrypt安装使用教程

1、Let’s Encrypt官网:

1、官方网站:https://letsencrypt.org/
2、项目主页:https://github.com/letsencrypt/letsencrypt

2、安装Let’s Encrypt脚本依赖环境:(这一部分可以跳过,因为官方提供的Let’s Encrypt脚本会自动检测并安装)

# Debian
apt-get install git

# CentOS 6
yum install centos-release-SCL && yum update
yum install python27
scl enable python27 bash
yum install python27-python-devel python27-python-setuptools python27-python-tools python27-python-virtualenv
yum install augeas-libs dialog gcc libffi-devel openssl-devel python-devel
yum install python-argparse

# CentOS 7
yum install -y git python27
yum install -y augeas-libs dialog gcc libffi-devel openssl-devel python-devel
yum install python-argparse

3、查看自己的VPS主机到底是安装了哪个操作系统版本,可以执行命令:

cat /etc/issue 或者 cat /etc/redhat-release

4、获取Let’s Encrypt免费SSL证书很简单,你只需要执行以下命令,就会自动在你的VPS上生成SSL证书和私钥。

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto

执行上述命令后,会弹出对话框,同意用户协议。 接着会提示让你关闭Nginx或者Apache。 Let’s Encrypt需要用到80和443端口,所以你需要关闭那些占用这两个端口的应用。 Let’s Encrypt免费SSL证书获取成功了!