手机wap网站定位,Wordpress盗版主题,麻章网站开发公司,淘客请人做网站1 关于Let’s Encrypt与Cerbot DNS验证
Let’s Encrypt 是一个提供 免费证书 的 认证机构。
Cerbot 是 Let’s Encrypt 提供的一个工具#xff0c;用于自动化生成、验证和续订证书。
DNS验证是 Cerbot 支持的验证方式之一。相比 HTTP 验证或 TLS-ALPN 验证#xff0c;DNS …1 关于Let’s Encrypt与Cerbot DNS验证
Let’s Encrypt 是一个提供 免费证书 的 认证机构。
Cerbot 是 Let’s Encrypt 提供的一个工具用于自动化生成、验证和续订证书。
DNS验证是 Cerbot 支持的验证方式之一。相比 HTTP 验证或 TLS-ALPN 验证DNS 验证更灵活可以用于获取任意域名如子域名或裸域名的证书无需直接访问服务器。 DNS 验证通过在目标域名的 DNS 记录中添加特定的文本记录TXT 记录来证明 对该域名的控制权。认证机构会查询域名的 DNS TXT 记录以验证域名所有权。
以下是 DNS 验证的具体步骤和背后逻辑
(1) 生成挑战内容
Cerbot 向 Let’s Encrypt 发送证书申请提供需要认证的域名。Let’s Encrypt 返回一个挑战Challenge内容包括一个随机字符串Challenge Token。
(2) 计算验证字符串
Cerbot 结合 Challenge Token 和账户密钥生成一个验证字符串。 验证字符串 SHA256(account_key token) 或类似算法的结果。 这个字符串需要通过 DNS TXT 记录发布。
(3) 添加 DNS TXT 记录
Cerbot 会提示用户手动或通过 API 在域名的 DNS 配置中添加一条 TXT 记录 记录名 _acme-challenge.your-domain记录值 验证字符串
例如对于域名 example.com
_acme-challenge.example.com. IN TXT 验证字符串
(4) 验证记录
Let’s Encrypt 会查询域名的 DNS 服务器寻找 _acme-challenge.your-domain 的 TXT 记录。如果记录值与预期验证字符串匹配则证明申请者对该域名具有控制权。
(5) 签发证书
验证成功后Let’s Encrypt 会签发证书Cerbot 会下载并保存证书。
Let’s Encrypt官网
参考教程
2 网站HTTPS配置最佳实践 使用Cerbot生成Let’s Encrypt证书、DNS厂家添加TXT记录、继续完成Cerbot的控制权认证 Nginx对网站进行Https配置HTTP的重定向到HTTPS 业务服务的HTTPS配置这里有两种方式按需 ♂️服务本身支持HTTPS一般开发后业务服务为http协议接口如SpringBoot Web项目可使用java keytool生成密钥配置ssl。若业务服务本身不支持https不建议调整业务模块保证业务开发的纯净。通过Nginx对接口进行转发http重定向为https这种方式是推荐的。
3 具体操作
3.1 服务器安装cerbot工具
cerbot用来管理Let’s Encrypt的证书申请、续约。我的服务器操作系统为centos7.9执行的有效操作如下
# 安装cerbot工具cerbot用来管理Lets Encrypt的证书申请、续约
sudo yum install certbot查看certbot版本验证工具安装是否成功
[rootvm ~]# certbot --version
# 正确输出cerbot工具版本
certbot 1.11.03.2 cerbot使用 DNS 验证获取单域名证书
3.2.1 cerbot验证与证书生成交互式
键入下列命令为指定域名生成证书交互式方式进行用户多次键入信息来完成验证信息的采集与证书的颁发
sudo certbot certonly --manual --preferred-challenges dns -d demo.cn -d www.demo.cn用户填入信息邮箱等用来订阅域名信息服务如Let’s Encrypt的证书升级、到期通知等 验证服务器与域名归属相关操作 1cerbot工具输出dns解析txt值 2dns解析后台添加txt的解析记录两条 cerbot工具进行验证验证通过输出证书到服务器 3.2.2 Nginx配置
修改nginx配置主要是配置站点重定向、启用ssl、配置证书路径
nginx配置非常灵活且具有扩展性其配置目录大致如下
- /etc/nginx/| - nginx.conf 主配置文件(定义了全局配置、事件模块、HTTP 模块等核心设置)| - ./conf.d/ 配置目录(此目录一般被主配置文件中被include| - www.demo.cn.conf (自己的站点配置,针对www.demo.cn的https配置就在这里) | - ...# 使用的Nginx版本
[rootvm ~]# nginx -v
nginx version: nginx/1.20.1www.demo.cn.conf配置文件内容
server {listen 80;server_name demo.cn www.demo.cn;# Redirect all HTTP requests to HTTPSreturn 301 https://$host$request_uri;
}server {listen 443 ssl http2;server_name demo.cn www.demo.cn;root /usr/share/nginx/html;index index.html index.htm;# SSL Configurationssl_certificate /etc/letsencrypt/live/demo.cn/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/demo.cn/privkey.pem;ssl_session_cache shared:SSL:1m;ssl_session_timeout 10m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;# Additional security headers (optional)add_header Strict-Transport-Security max-age31536000; includeSubDomains always;# Error pageserror_page 404 /404.html;location /404.html {}error_page 500 502 503 504 /50x.html;location /50x.html {}# Default locationlocation / {try_files $uri $uri/ 404;}
}
重启nginx刷新配置
# 重启nginx
sudo systemctl restart nginx
# 查看nginx状态
sudo systemctl status nginx清空缓存查看网站 没错到此为止网站已经完成了https的配置有几点说明
nginx.conf配置未作修改但需要检查nginx.conf配置中是否include了conf.d配置目录。如果之前网站接入的服务为http需要对服务进行调整使协议兼容可以通过使用nginx反向代理服务为https推荐或者改造服务自身支持https。
通过nginx反向代理API服务为https的配置大致如下
server {listen 443 ssl http2;server_name demo.cn www.demo.cn;...location /your-api/module1 {allow 127.0.0.1; # 本地回环地址allow otherip; # 允许指定的 IP 地址allow ::1; # IPv6 本地地址deny all; # 禁止其他所有来源proxy_pass http://127.0.0.1:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /your-api/module2 {allow 127.0.0.1; # 本地回环地址allow otherip; # 允许指定的 IP 地址allow ::1; # IPv6 本地地址deny all; # 禁止其他所有来源proxy_pass http://127.0.0.1:8081;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}...}3.2.3 cerbot证书续费
certbot certonly --renew-by-default -d demo.cn -d www.demo.cn
# 会输出1、2两种验证方式我采用的是模式2续费命令说明
certbot Certbot 是一个用于申请和管理 Let’s Encrypt SSL 证书的工具。 certonly** 表示只申请证书不自动安装或配置 Web 服务器如 Nginx 或 Apache。适合手动配置证书的场景。 --renew-by-default 如果证书已经存在Certbot 会尝试续费renew而不是重新申请。如果证书不存在Certbot 会申请新证书。 -d demo.cn -d www.demo.cn -d 参数用于指定域名。这里申请的是 demo.cn 和 www.demo.cn 两个域名的证书。多个 -d 参数表示申请一个包含多个域名的证书SAN 证书。
两种验证域名所有权
Spin up a temporary webserver (standalone) Certbot 会启动一个临时的 Web 服务器来完成 HTTP-01 验证。适用场景如果你没有运行 Web 服务器如 Nginx 或 Apache或者可以暂时停止 Web 服务器。注意事项需要确保 80 端口未被占用或者暂时停止 Web 服务器。 Place files in webroot directory (webroot) Certbot 会将验证文件放置在你的 Web 服务器的根目录如 /var/www/html通过 HTTP 访问验证文件。适用场景如果你正在运行 Web 服务器如 Nginx 或 Apache并且不想停止服务。注意事项需要指定 Web 根目录路径。