cerbot 使用Certbot获取免费泛域名

所以目前我需求就是获取nginx上使用的.pem.key两个文件.

安装cerbot,并使用

获取泛域名文档  看他的泛域名文档,以下是安装总结

1. 使用snap 安装certbot,关于snapd 包管理,可以到网上查看

ubuntu 已经自带snap, 使用时只要更新命令更新 sudo snap install core; sudo snap refresh core

2. 安装 certbot

安装前先删除 原来的安装的certbot , sudo apt remove certbot

执行安装命令 sudo snap install –classic certbot

把certbot命令添加到全局 sudo ln -s /snap/bin/certbot /usr/bin/certbot

3. 获取证书 ,泛域名 要使用下面的泛域名生成方法

sudo certbot certonly –nginx

4 在nginx 配置关联证书

ssl_certificate /etc/letsencrypt/live/xxx.com/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/xxx.com/privkey.pem;

5. 自动更新证书

它到期之前自动更新您的证书,除非你修改配置,更新证书的配置在 /etc/letsencrypt/renewal/下面

sudo certbot renew --dry-run # 测试自动更新是否可用

The command to renew certbot is installed in one of the following locations:
/etc/crontab/
/etc/cron.*/*
systemctl list-timers

challenge 关于证书获取的简单介绍

Let’s Encrypt需要验证网站的所有权才能颁发证书, 官方称之为challenge(挑战).
在网站上的指定位置发布指定文件(HTTP-01)

当使用Webroot插件或手动插件时,请确保webroot目录存在并且您正确指定它。如果您为example.com设置了webroot目录,/var/www/example.com 那么放置的文件/var/www/example.com/.well-known/acme-challenge/testfile应该出现在您的网站上http://example.com/.well-known/acme-challenge/testfile(此处重定向到HTTPS是可以的,并且不应该阻止工作中的挑战)

sudo certbot certonly --standalone --email 'zbysir@qq.com' -d 'bysir.com'

standalone 就是独立插件, 它需要绑定80端口, 所以先关掉机器上的80端口吧, 或者换一台主机安装.
不出意外的话, 会死在Waiting for verification…,

可以看到他会请求 http://bysir.store/.well-known/acme-challenge/r9NH9hle6_7L9avkG-ID6A1BI4h4IgFVn6nx3VQZRpI以认证网站.
location ~ “^/\.well-known/acme-challenge/(.*)$” {
default_type text/plain;
return 200 “$1.IL3bE2eqHDs1k0Lmxm63CXpLvzmosMuUDIywEIBTPnG”;
}

  • 在网站上提供指定的临时证书(TLS-SNI-01)
  • 在域名系统中发布指定的DNS记录(DNS-01)

泛域名证书

certbot certonly --preferred-challenges dns --manual -d *.mydomain.com --server https://acme-v02.api.letsencrypt.org/directory

–preferred-challenges dns: 认证方式选择DNS, 泛域名支持DNS
–manual: 手动模式, 这里为了简单就使用手动认证了, 下面会说自动模式的使用.
-d *.mydomain.com: 就是要申请的泛域名了
–server https://acme-v02.api.letsencrypt.org/directory: 泛域名证书是新功能, 如果要使用就得加上这个参数

注意这一步 命令里会有提示,需要手动配置TXT记录, 在域名解析服务商添加一个泛解析就可以了, 设置好了再敲下回车.

泛域名证书docker 方法 (不推荐)

sudo docker run -it --rm --name certbot \
-v "/etc/letsencrypt:/etc/letsencrypt" \
-v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
certbot/certbot certonly -d *.mical.com --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

根据提示 在域名供应商里添加txt 记录

dig -t txt _acme-challenge.michnal.com

再次更新

docker run -it --rm --name certbot
-v "/etc/letsencrypt:/etc/letsencrypt"
-v "/var/lib/letsencrypt:/var/lib/letsencrypt"
certbot/certbot certonly --manual -d '*.michan.cn'

泛域名证书-插件方法认证域名(推荐)

此法就不需要手动在 dns 服务器商那里 添加txt 记录了

以下用 cloudflare  dns 服务器 ,除了 第三步不一样,其他都一样

https://certbot-dns-cloudflare.readthedocs.io/en/stable/index.html#welcome-to-certbot-dns-cloudflare-s-documentation

  1. 安装dns plugin  这里要安装cloudflare 版的,
  2. 然后到cloudflare 控制台  创建 token ,设置token权限: The Token needed by Certbot requires Zone:DNS:Edit permissions for only the zones you need certificates for.
  3. 然后把token  放到自己创建 cloudfare.ini 文件里, 文件权限 chmod 600
# Cloudflare API token used by Certbot
dns_cloudflare_api_token = 0123456789abcdef0123456789abcdef01234567

下面是命令 执行

这里接安装cerbot 的第二步

sudo snap set certbot trust-plugin-with-root=ok # 确认插件包含级别

sudo snap install certbot-dns-cloudflare # 安装插件, 不同的dns 服务商,不同的插件这是是cloudflare 

sudo mkdir /home/.secrets/  
sudo chmod 700 /home/.secrets/ 
sudo vim /home/.secrets/certbot_cloudflare.ini 
# 輸入: dns_cloudflare_api_token = xxxxtokenxxx 
# 在cloudflare上開token,權限 Zone:Zone:Read, Zone:DNS:Edit for all zones 

sudo chmod 600 ~/.secrets/cloudflare.ini 
sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /home/wei/.secrets/certbot_cloudflare.ini \
  -d xmetal.cc,*.xmetal.cc

Leave a Reply

Your email address will not be published. Required fields are marked *