news 2026/8/8 8:49:03

Let‘s Encrypt免费证书与HTTPS配置完全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Let‘s Encrypt免费证书与HTTPS配置完全指南

本文详解如何使用Let’s Encrypt获取免费SSL证书,配置Nginx/Apache实现HTTPS,以及自动续期方案。

前言

2024年了,网站还不上HTTPS?

  • 浏览器会标记为"不安全"
  • SEO排名受影响
  • 无法使用HTTP/2、HTTP/3
  • 用户数据传输有风险

以前SSL证书很贵,现在有了Let’s Encrypt,完全免费,自动续期,没有理由不用。


一、Let’s Encrypt简介

1.1 什么是Let’s Encrypt

Let’s Encrypt是一个免费、自动化、开放的证书颁发机构(CA),由非营利组织ISRG运营。

特点:

  • 完全免费
  • 自动化颁发和续期
  • 被所有主流浏览器信任
  • 单域名/泛域名都支持

1.2 证书类型

类型说明验证方式
单域名只对一个域名有效HTTP/DNS
多域名(SAN)多个域名共用一个证书HTTP/DNS
泛域名*.example.com仅DNS

1.3 验证方式

HTTP-01验证:

  • 在网站目录放置特定文件
  • Let’s Encrypt访问验证
  • 需要80端口可访问

DNS-01验证:

  • 添加特定的DNS TXT记录
  • Let’s Encrypt查询验证
  • 适合泛域名、无法开放80端口的场景

二、Certbot安装与使用

2.1 安装Certbot

# Ubuntu/Debianaptupdateaptinstallcertbot# CentOS/RHELyuminstallepel-release yuminstallcertbot# 或使用snap(推荐,版本更新)snapinstall--classic certbotln-s /snap/bin/certbot /usr/bin/certbot

2.2 获取证书(HTTP验证)

独立模式(没有Web服务器时):

# 需要80端口空闲certbot certonly --standalone -d example.com -d www.example.com

Webroot模式(已有Web服务器):

# 指定网站根目录certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com

Nginx插件模式(自动配置):

# 安装插件aptinstallpython3-certbot-nginx# 自动获取证书并配置Nginxcertbot --nginx -d example.com -d www.example.com

2.3 获取证书(DNS验证)

# 泛域名证书certbot certonly --manual --preferred-challenges dns -d"*.example.com"-d example.com

执行后会提示添加DNS TXT记录:

Please deploy a DNS TXT record under the name: _acme-challenge.example.com with the following value: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

添加记录后等待DNS生效,然后继续。

2.4 证书文件说明

证书存放在/etc/letsencrypt/live/example.com/

文件说明用途
cert.pem域名证书-
chain.pem中间证书链-
fullchain.pem完整证书链Nginx ssl_certificate
privkey.pem私钥Nginx ssl_certificate_key

三、Nginx HTTPS配置

3.1 基础配置

server { listen 80; server_name example.com www.example.com; # HTTP重定向到HTTPS return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name example.com www.example.com; # SSL证书 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # SSL配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; # HSTS(可选,强制HTTPS) add_header Strict-Transport-Security "max-age=31536000" always; root /var/www/html; index index.html; location / { try_files $uri $uri/ =404; } }

3.2 安全加固配置

# /etc/nginx/conf.d/ssl.conf # SSL会话缓存 ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ssl_session_tickets off; # 现代加密套件 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; # OCSP Stapling ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; # DH参数(可选,增强安全性) # openssl dhparam -out /etc/nginx/dhparam.pem 2048 # ssl_dhparam /etc/nginx/dhparam.pem;

3.3 测试配置

# 测试Nginx配置nginx -t# 重载配置nginx -s reload# 测试SSLcurl-I https://example.com

四、自动续期配置

4.1 证书有效期

Let’s Encrypt证书有效期是90天,建议提前30天续期。

4.2 手动续期

# 续期所有证书certbot renew# 测试续期(不真正执行)certbot renew --dry-run

4.3 自动续期

方法1:Cron定时任务

# crontab -e03* * * certbot renew --quiet --post-hook"nginx -s reload"

方法2:Systemd Timer(推荐)

Certbot安装后通常自带timer:

# 查看timer状态systemctl status certbot.timer# 启用timersystemctlenablecertbot.timer systemctl start certbot.timer# 查看下次执行时间systemctl list-timers|grepcertbot

4.4 续期钩子

# 续期成功后执行的命令certbot renew --post-hook"systemctl reload nginx"# 或在配置文件中设置# /etc/letsencrypt/renewal/example.com.conf[renewalparams]post_hook=systemctl reload nginx

五、内网服务HTTPS

5.1 问题场景

内网服务器没有公网IP和域名,如何配置HTTPS?

5.2 方案对比

方案优点缺点
自签名证书简单浏览器警告
内网CA企业级方案配置复杂
反向代理正规证书需要公网入口
组网+DNS验证正规证书需要域名

5.3 自签名证书(临时方案)

# 生成私钥openssl genrsa -out server.key2048# 生成证书openssl req -new -x509 -key server.key -out server.crt -days365\-subj"/CN=myserver.local"# Nginx配置使用ssl_certificate /path/to/server.crt;ssl_certificate_key /path/to/server.key;

5.4 组网访问方案

如果使用组网软件(如星空组网)将内网服务器和客户端连接起来:

  1. 内网服务器通过组网获得固定的虚拟IP
  2. 用DNS验证方式获取Let’s Encrypt证书(需要有域名)
  3. 将域名解析到组网的虚拟IP
  4. 客户端通过域名+HTTPS访问

这样既有正规证书,又不需要公网暴露服务器。


六、常见问题

6.1 验证失败

Challenge failed for domain example.com

排查:

  1. 确认80端口可访问:curl http://example.com/.well-known/acme-challenge/test
  2. 检查防火墙
  3. 检查DNS解析是否正确

6.2 速率限制

Let’s Encrypt有速率限制:

  • 每个域名每周50个证书
  • 每个IP每小时10个失败验证

解决:等待限制解除,或使用测试环境:

certbot certonly --staging -d example.com

6.3 证书续期失败

# 查看续期日志cat/var/log/letsencrypt/letsencrypt.log# 常见原因:# 1. 80端口被占用# 2. 域名DNS变更# 3. 防火墙规则变更

七、其他ACME客户端

除了Certbot,还有其他Let’s Encrypt客户端:

客户端特点适用场景
acme.sh纯Shell实现,轻量无Python环境
Caddy内置自动HTTPS简单场景
Traefik云原生网关K8s环境

7.1 acme.sh示例

# 安装curlhttps://get.acme.sh|sh# 获取证书acme.sh --issue -d example.com -w /var/www/html# 安装证书到Nginxacme.sh --install-cert -d example.com\--key-file /etc/nginx/ssl/example.com.key\--fullchain-file /etc/nginx/ssl/example.com.crt\--reloadcmd"nginx -s reload"

八、总结

Let’s Encrypt + HTTPS配置要点:

  1. 选择验证方式:有80端口用HTTP验证,否则用DNS验证
  2. 选择客户端:Certbot最通用,acme.sh最轻量
  3. 配置自动续期:证书90天过期,必须自动续期
  4. 安全加固:使用TLS1.2+,现代加密套件,开启HSTS
  5. 内网服务:可以用组网+DNS验证获取正规证书

参考资料

  1. Let’s Encrypt官方文档:https://letsencrypt.org/docs/
  2. Certbot文档:https://certbot.eff.org/docs/
  3. Mozilla SSL Configuration Generator:https://ssl-config.mozilla.org/

💡建议:所有对外服务都应该使用HTTPS,Let’s Encrypt让这件事变得零成本。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 23:33:33

突破性音频AI技术:Step-Audio 2系列重塑智能语音交互新范式

突破性音频AI技术:Step-Audio 2系列重塑智能语音交互新范式 【免费下载链接】Step-Audio-2-mini-Think 项目地址: https://ai.gitcode.com/StepFun/Step-Audio-2-mini-Think 在人工智能浪潮席卷全球的今天,语音交互正成为人机沟通的核心桥梁。St…

作者头像 李华
网站建设 2026/8/7 15:34:16

基于vue的家政服务管理系统_37cw9ju0_springboot php python nodejs

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/8/7 14:07:17

《零基础学 PHP:从入门到实战》·PHP编程精进之路:掌握高级特性与实战技巧-1

第1章:面向对象编程进阶 章节介绍 学习目标: 深入掌握PHP面向对象编程(OOP)的核心与高级机制.你将不再满足于创建简单的类,而是学会运用静态成员、继承、多态、抽象与接口来设计松耦合、高复用的架构.本章将解锁"魔术方法"的奥秘,让你能够优雅地处理对象生命周期与动…

作者头像 李华
网站建设 2026/8/7 23:32:44

Step-Audio 2:重新定义人机语音交互的技术革命

当语音助手仍停留在简单问答阶段,当智能设备只能机械执行指令,当跨语言交流仍充满障碍,我们是否在期待一个真正能"听懂"人类声音的AI伙伴?Step-Audio 2系列模型的诞生,正在为这个期待给出肯定答案。 【免费下…

作者头像 李华
网站建设 2026/8/8 0:15:24

AutoGPT与Stable Diffusion联用:图文内容协同生成新玩法

AutoGPT与Stable Diffusion联用:图文内容协同生成新玩法 在内容创作的战场上,效率就是生命线。一条社交媒体推文从构思到发布,往往需要文案、设计师、审核三轮协作,耗时数小时甚至数天。而今天,一个AI系统可以在几分钟…

作者头像 李华
网站建设 2026/8/8 7:30:15

NetSonar:3分钟快速掌握的网络诊断终极方案

NetSonar:3分钟快速掌握的网络诊断终极方案 【免费下载链接】NetSonar Network pings and other utilities 项目地址: https://gitcode.com/gh_mirrors/ne/NetSonar 你是否曾经遇到过这样的困扰:网络突然变慢,却不知道问题出在哪里&am…

作者头像 李华