Let's Encrypt SSL 证书介绍
Let's Encrypt SSL 证书介绍
Let's Encrypt 是一个免费、自动化和开放的证书颁发机构(CA),由非营利组织互联网安全研究小组(ISRG)运营。它旨在推动全球网站从 HTTP 切换到 HTTPS,通过提供免费的 SSL/TLS 证书,降低部署加密连接的门槛。
Let's Encrypt 的核心价值
- 免费:为所有域名提供完全免费的证书。
- 自动化:通过 ACME 协议实现证书申请、颁发和续期的全自动化。
- 透明:所有颁发和吊销的证书都公开记录,可供查阅。
- 安全:采用最佳实践保障证书安全性,并积极推动网络整体安全。
- 开放:自动化协议 ACME 已标准化,促进生态发展。
其证书有效期为 90 天,鼓励用户通过自动化流程定期续期,以增强安全性。自推出以来,Let's Encrypt 已成为全球最受欢迎的证书颁发机构之一,为超过 700M 网站提供加密支持。
ACME 客户端 - CertBot 介绍
Certbot 是由电子前哨基金会(EFF)开发的一款免费、开源的 ACME 客户端软件,用于简化从 Let's Encrypt 获取、部署和管理 SSL/TLS 证书的流程。它是目前最流行、文档最丰富的 Let's Encrypt 客户端之一。
主要功能与特点
- 自动化操作:可自动完成域名验证、证书获取、安装以及 Web 服务器(如 Nginx、Apache)配置。
- 广泛的兼容性:支持多种操作系统(Linux、macOS、Windows)和 Web 服务器软件。
- 插件系统:提供丰富的插件,可与不同服务器和环境无缝集成。
- 手动模式:也支持手动命令模式,用于自定义或复杂的部署场景。
- 续期提醒与自动化:可轻松设置证书自动续期,避免证书过期。
CertBot 安装与部署
1.真实生产环境
Linux:Debian13(trixie)
Docker中运行的nginx:v1.29.3
2.安装CertBot
sudo apt update
sudo apt install certbot python3-certbot-nginx # 对于 Nginx
3.获取SSL证书
因为环境中的 Nginx 是在 Docker 中运行的,而 CertBot 安装是在宿主机,因此我们要使用 CertBot 的手动获取 SSL 证书的方式。
手动获取SSL证书
sudo certbot certonly --standalone -d 65432123.xyz -d www.65432123.xyz -d public.65432123.xyz
按照提示完成获取,注意需先关闭 Docker 中正在运行的 Nginx ,因为获取过程要使用80端口。
需保证:1.检查80端口是否对外网开放 2.DNS服务商能被 CertBot 正常访问
附:自动获取SSL证书
sudo certbot --nginx # 宿主机运行的nginx
获取完成后,CertBot 会返回 SSL 证书的存放目录。
2025年12月12日的 CertBot 获取完成后提示已经设置自动续期 SSL 证书(如未提示,需要手动配置自动续期 SSL 证书,避免 SSL 到期后服务不可用)
4.重新配置 Nginx 配置
server {
listen 80;
server_name 65432123.xyz www.65432123.xyz;
# http请求重定向到https
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name 65432123.xyz;
# ssl证书目录配置
ssl_certificate /etc/letsencrypt/live/65432123.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/65432123.xyz/privkey.pem;
# 可选的其他配置(建议直接复制使用,注意TLS版本,旧版本存在缺陷,会被解密)
# SSL 协议和加密套件配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# SSL 会话缓存
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
# 安全头
add_header Strict-Transport-Security "max-age=63072000" always;
# 其他原有配置
......
}
5.重新配置 Nginx 容器并运行
1.开放80端口同时,增加了443端口(记得宿主机防火墙开放443端口,443端口是专门用于 HTTPS 访问的端口)。
2.除了 Nginx 配置文件外,增加了letsencrypt目录绑定,以允许容器中的 Nginx 可以读取 SSL 证书。
docker run -d \
--name nginx \
-p 80:80 \
-p 443:443 \
-v /etc/letsencrypt:/etc/letsencrypt:ro \
-v /path/to/nginx/conf.d:/etc/nginx/conf.d \
-v /path/to/website:/var/www/html \
nginx:alpine
现在访问 http://65432123.xyz 和 http://www.65432123.xyz 将自动跳转到 https 安全链接
相关链接
声明:转载需注明出处