早就要想弄let’s encrypt 但是由于一直忙外加Let’s encrypt 初期复杂没有弄。
今天要迁移一公司服务用到的https证书过期,故又弄起来let’s encrypt。它的简介这里就不描述了,网上很多介绍的不错直接进入主题。
1、获取 Certbot 客户端
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
./certbot-auto —help
2、配置 nginx 、验证域名所有权
配置下nginx.conf 添加如下,这是必须要开80端口,let’s encrypt 服务器会到这里验证,要开下面的验证通道。配置完后进行重载
location ^~ /.well-known/acme-challenge/ {
default_type “text/plain”;
root html/authserver.eglsgame.com/;
}
location = /.well-known/acme-challenge/ {
return 404;
}
3、生成证书
证书生成成功后,会有 Congratulations 的提示,并告诉我们证书放在 /etc/letsencrypt/live 这个位置。(生成过程中卡在python install,必须要自己修改下源,步骤如下要不然过不去。
mkdir -p ~/.pip/
vi ~/.pip/pip.conf
添加
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
./certbot-auto certonly --webroot -w /mnt/data/authresource/html/authserver.eglsgame.com --email limingjun@egls.cn -d authserver.eglsgame.com
4、配置 Nginx
ssl_certificate /etc/letsencrypt/live/authserver.eglsgame.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/authserver.eglsgame.com/privkey.pem;
这里还需要注意,必须要/etc/letsencrypt目录权限,要不然会报权限问题。修改重载后浏览器就可以获得漂亮的绿色。
5、配置更新
测试更新
./certbot-auto renew —dry-run
手动更新
/certbot-auto renew -v
添加自动更新脚本
vi /opt/letsencrypt/renew.sh
/opt/letsencrypt/certbot-auto renew —quiet —no-self-upgrade
cd /mnt/data/authresource
./ming -s reload
添加crontab
30 2 * * 0 /opt/letsencrypt/renew.sh 每周日执行一次
6、验证服务器的https安全性
7、通配符域名申请
./certbot-auto certonly -d *.eglsgame.com --manual --preferred-challenges dns
--server https://acme-v02.api.letsencrypt.org/directory
certonly,表示安装模式,Certbot 有安装模式和验证模式两种类型的插件。
--manual 表示手动安装插件,Certbot 有很多插件,不同的插件都可以申请证书,用户可以根据需要自行选择
-d 为那些主机申请证书,如果是通配符,输入 *.newyingyong.cn(可以替换为你自己的域名)
--preferred-challenges dns,使用 DNS 方式校验域名所有权
--server,Let's Encrypt ACME v2 版本使用的服务器不同于 v1 版本,需要显示指定。
注意验证时,需要添加TXT记录
最近发现了acme很强大的工具
1,安装
curl https://get.acme.sh | sh
2,生产域名证书
/root/.acme.sh/acme.sh --issue -d "xxx.daemon.com" -w /mnt/webserver/html/
3,生产nginx使用
/root/.acme.sh/acme.sh --install-cert -d "towngame.mengcloud.com.cn" --fullchain-file /etc/certs/towngame.mengcloud.com.cn/fullchain.pem --key-file /etc/certs/towngame.mengcloud.com.cn/privkey.pem --reloadcmd "sudo systemctl restart ming"