Intro
Certbot 是一个基于 Let's Encrypt 的自动化申请证书的工具, 支持的系统和 web server 也很多, 详见 Certbot 官网 https://certbot.eff.org/
Certbot 有一些 dns 插件可以自动化的不需要手动设置 dns 等方式来验证域名的所属, 但是基本是一些国外的大型 DNS 提供商的, 针对国内的话通过 DNS 验证的话还是需要手动验证 DNS 记录, 这里主要介绍手动验证, 通过 DNS 插件自动验证请参考 certbot 官网
手动验证 DNS
安装 Certbot, 具体步骤参考官网
- $ sudo apt-get update
- $ sudo apt-get install software-properties-common
- $ sudo add-apt-repository universe
- $ sudo add-apt-repository ppa:certbot/certbot
- $ sudo apt-get update
- $ sudo apt-get install certbot python-certbot-nginx
申请 HTTPS 证书
安装好 certbot 之后, 在命令行中执行以下命令:
sudo certbot certonly -d "*.weihanli.xyz" -d weihanli.xyz --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
执行完命令之后会提示需要记录 IP 信息, 需要同意不然不能继续申请
设置 DNS TXT 记录
按照提示, 在自己的域名服务商那里添加或者修改 _ache-challenge 的 txt 记录, 修改之后需要验证是否解析成功, 验证方式详见后面, 验证解析成功之后输入 Enter 键继续
证书申请成功
如果出现这样的提示就说明证书已经申请成功了
配置 Web server
证书申请成功了就基本搞定了, 有了证书之后就在服务器上配置一下就可以了
nginx 配置示例:
- server {
- listen 80;
- listen 443;
- ssl_certificate /etc/letsencrypt/live/weihanli.xyz/fullchain.pem;
- ssl_certificate_key /etc/letsencrypt/live/weihanli.xyz/privkey.pem;
- if ($scheme = http) {
- return 301 https://$host$request_uri;
- }
- server_name weihanli.xyz;
- }
验证 DNS TXT 记录
Windows 系统上在命令行或 powershell 中执行以下命令:
nslookup -q=txt _acme-challenge.weihanli.xyz
- Reference
- https://certbot.eff.org/
来源: https://www.cnblogs.com/weihanli/p/10424178.html