Let's Encrypt SSL 证书介绍

Web

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.xyzhttp://www.65432123.xyz 将自动跳转到 https 安全链接

相关链接

letsencrypt官网

certbot官网

nginx官网


声明:转载需注明出处

版权CC BY-NC-SA 4.0

666 阅读
888 点赞
777 评论
Ducky Funk