let's encrypt + nginx https配置
1、cd
/opt/letsencrypt 没有该目录的,mkdir创建目录
2、
sudo git clone
https://github.com/certbot/certbot
没有git命令的安装git,测试有没有安装git命令 git --version, git安装命令yum install git,再用git --version查看安装git版本号
3、
nginx server
配置域名验证,把下面脚本配置到/etc/nginx/conf.d/目录下的conf文件中,同时在/mnt目录创建nginx_cert_180509目录,以日期命名
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /mnt/nginx_cert_180509;
}
location = /.well-known/acme-challenge/ {
return 404;
}
4、加入https监听端口
listen 443 ssl;
5、加入域名配置(多个域名用空格隔开)
6、重启nginx服务器,重启前用nginx -t命令检测配置文件的正确性,确认无误后,执行
nginx -s reload
7、 导入Linux环境变量,分别执行
export DIR=/mnt/
nginx_cert_180509
8、 cd到
/opt/letsencrypt/certbot/目录下,
执行命令申请证书
./certbot
certonly --server
https://acme-v01.api.letsencrypt.org/directory
-a webroot --webroot-path=$DIR -d $DOMAINS
注意:期间会提示输入邮箱,必须输入才能往下执行,如果提示无法访问到上面配置的域名,请重启nginx并检测域名的正确可访问性
9、执行完以上命令后,会在目录/etc/letsencrypt/live/
ws.youdan.com
下面生成fullchain.pem和privkey.pem文件,把这两个文件配置到nginx配置文件中,代码如下
#let's encrypt
ssl_certificate_key /etc/letsencrypt/live/ws.youdan.com/privkey.pem;
10、配置好nginx后,验证nginx -t,并重启 nginx -s reload,至此,可使用https协议访问域名网站了。
11、 创建自动检查更新脚本,并加入crontab
cd 到
/mnt/crontab_scrpit/目录,没有创建该目录,创建文件renewCerts.sh,
vim
renewCerts.sh编辑文件内容,插入以下脚本
#!/bin/sh
# This script renews all the Let's Encrypt certificates with a validity < 30 days
if ! /opt/letsencrypt/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
echo Automated renewal failed:
cat /var/log/letsencrypt/renew.log
exit 1
fi
nginx -t && nginx -s reload
退出保存,用cat
renewCerts.sh
命令查看是否已经保存成功
12、编辑系统计划任务
sudo crontab -e
在打开的文件中加入以下代码保存退出即可
@daily
/mnt/crontab_scrpit/
renewCerts.sh