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让这件事变得零成本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1013307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flume监控工具Ganglia介绍

好的,我们来详细介绍一下用于监控Flume的工具:Ganglia。 Ganglia概述 Ganglia 是一款开源的、面向大规模集群和网格的分布式监控系统。它设计之初就是为了监控高性能计算系统(HPC),但因其良好的扩展性、低开销和丰富的功能,被广泛用于监控各种分布式系统和服务,包括Apa…

Linux性能监控工具全家桶一文掌握系统状态

本文系统介绍Linux性能监控工具,从CPU、内存、磁盘到网络,一站式掌握系统状态观测。前言 服务器卡了,怎么排查? Linux下有大量性能监控工具,但很多人只会用top。今天把这些工具一网打尽,建立完整的性能观测…

spark的Kryo 序列化介绍

好的,我们来详细介绍一下 Spark 中的 Kryo 序列化。 默认情况下,Spark 使用 Java 的序列化机制。Java 的序列化机制使用方便,不需要额外的配置,在算子中使用的变量实现 Serializable 接口即可,但是,Java 序列化机制的效率不高,序列化速度慢并且序列化后的数据所占用的空…

5分钟上手Cmder:让Windows命令行颜值与效率双提升

5分钟上手Cmder:让Windows命令行颜值与效率双提升 【免费下载链接】cmder 项目地址: https://gitcode.com/gh_mirrors/cmd/cmder 你是否曾经对Windows自带的那个黑乎乎的命令行窗口感到厌倦?🤔 每天面对单调的cmd界面,不仅…

flume的数据模型介绍

Flume的数据模型围绕三个核心组件构建:Source(数据源)、Channel(通道) 和 Sink(数据出口),形成单向数据流管道。以下是详细说明:1. 数据源(Source&#xff09…

Wan2.1-I2V图生视频模型完整教程:从零开始掌握动态内容生成

Wan2.1-I2V图生视频模型完整教程:从零开始掌握动态内容生成 【免费下载链接】Wan2.1-I2V-14B-480P 项目地址: https://ai.gitcode.com/hf_mirrors/Wan-AI/Wan2.1-I2V-14B-480P 当静态图像遇见AI智能,内容创作的世界正在发生革命性变化。Wan2.1-I…

AutoGPT多语言支持能力现状与优化建议

AutoGPT多语言支持能力现状与优化建议 在AI智能体从“工具”迈向“助手”的演进过程中,一个关键的转折点正在发生:用户不再满足于用英语向系统发号施令,而是希望直接使用母语完成复杂任务。这种期待背后,是对真正全球化人工智能系…

利用AutoGPT镜像实现AI自动化办公的5个真实场景

利用AutoGPT镜像实现AI自动化办公的5个真实场景 在知识工作者每天被会议纪要、周报撰写、信息搜集和流程协调压得喘不过气的今天,一个能主动思考、自主执行任务的“数字同事”已不再是科幻情节。随着大语言模型(LLM)能力的跃迁,我…

由AI驱动的3D机器人感知与地图构建技术栈

NVIDIA如何构建一个统一、实时、由AI驱动的3D机器人感知与地图构建技术栈。 其核心目标是让机器人具备在复杂、未知环境中进行自主导航和灵巧操作所必需的“空间智能”。 为了帮助您快速掌握并将其付诸实践,以下是对该技术栈的解读、应用指南与关键总结。 一、技术全…

deepseek进入死循环了

无解了 等了好久,deepseek自己结束生成了 生成的结果: 我们注意到,原函数WeightedFV中调用了DepthMap函数,但是并没有给出DepthMap函数的定义。根据代码上下文,我们可以推断DepthMap函数的作用是从聚焦体积(FV&…

基于vue的小说在线阅读销售平台_7np993jf_springboot php python nodejs

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

泗洪无人机培训影响力大的机构

泗洪无人机培训影响力大的机构——翼启飞科技引言随着无人机行业的蓬勃发展,泗洪地区对专业无人机人才的需求日益增长,无人机培训机构也如雨后春笋般涌现。在众多机构中,翼启飞科技(江苏宿迁)有限公司以其卓越的教学质…

NVIDIA NeMo Agent应用场景和创建智能体实践

NVIDIA NeMo Agent Toolkit I. 技术架构梳理 NVIDIA NeMo Agent 工具包是一个开源框架,其核心设计哲学是 “框架无关” 和 “工具集成”。它旨在成为一个“粘合剂”层,让开发者能够统一地组合、管理和部署基于不同框架构建的AI智能体与工具。 其架构可以…

NVIDIA Llama Nemotro 推理模型构建企业级 AI 智能体

总结分析:使用先进的开放式 NVIDIA Llama Nemotron 推理模型构建企业级 AI 智能体 核心主旨: 本文旨在宣布并详细介绍 NVIDIA 新推出的 Llama Nemotron 推理模型系列。该系列的核心目标是解决企业级 AI 智能体对强大推理能力的迫切需求,通过…

Django 标准缓存cache 模块API

一、Django缓存系统概述 Django提供了一个统一的缓存API,支持多种缓存后端(内存、数据库、文件、Redis等)。你可以在不改动代码的情况下,通过配置切换不同的缓存后端。 # 支持的缓存后端 CACHES {default: {BACKEND: django.core…

OpenFeign 声明式客户端的动态代理与 LoadBalancer 负载均衡策略

在分布式微服务架构中,服务间的高效、可靠远程调用是系统稳定运行的关键。Spring Cloud OpenFeign 以其声明式、简洁的风格,极大简化了 HTTP 客户端的开发,同时深度集成客户端负载均衡机制。本文将从原理到实战,深入剖析 OpenFeig…

Tiled地图渲染引擎深度解析:从架构设计到性能优化的完整指南

Tiled地图渲染引擎深度解析:从架构设计到性能优化的完整指南 【免费下载链接】tiled 项目地址: https://gitcode.com/gh_mirrors/til/tiled Tiled地图编辑器作为业界领先的2D地图制作工具,其核心渲染引擎采用了高度模块化的设计理念,…

BERT模型训练全流程解析:从数据加载到模型保存

本文将详细解析一个完整的中文BERT情感分类模型训练流程,涵盖数据预处理、模型配置、训练循环等关键环节。 先上代码: # 模型训练 train.py import torch from MyData import MyDataset # 自定义数据集类 from torch.utils.data import DataLoader # 数…

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

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

OpenCode正则搜索:让代码大海捞针变得轻而易举

OpenCode正则搜索:让代码大海捞针变得轻而易举 【免费下载链接】opencode 一个专为终端打造的开源AI编程助手,模型灵活可选,可远程驱动。 项目地址: https://gitcode.com/GitHub_Trending/openc/opencode 在当今快速迭代的软件开发环境…