Let‘s Encrypt HTTPS 证书配置指南

# Let's Encrypt HTTPS 证书配置指南

本指南用于在 Amazon Linux 2023 系统上使用 Let's Encrypt 免费证书为 Nginx 配置 HTTPS。

## 前置条件

- 系统:Amazon Linux 2023
- Web 服务器:Nginx
- 域名已正确解析到服务器 IP
- 防火墙已开放 80 和 443 端口

## 配置步骤

### 1. 检查系统环境

```bash
# 检查操作系统版本
cat /etc/os-release

# 检查 Nginx 是否已安装
nginx -v

# 检查域名 DNS 解析
nslookup your-domain.com
```

### 2. 安装所需软件

```bash
# 更新软件包
dnf update -y

# 安装 Nginx(如果未安装)
dnf install -y nginx

# 启动并启用 Nginx
systemctl start nginx
systemctl enable nginx

# 安装 Certbot
dnf install -y certbot

# 安装 Certbot Nginx 插件
dnf install -y python3-certbot-nginx
```

### 3. 确保 Nginx 配置正确

```bash
# 检查 Nginx 配置文件语法
nginx -t

# 如果配置文件存在,确认 HTTP 80 端口配置正确
# 编辑 Nginx 配置文件(根据实际情况修改)
vi /etc/nginx/conf.d/your-site.conf
```

**Nginx HTTP 配置示例:**

```nginx
server {
listen 80;
server_name your-domain.com;

location / {
root /var/www/your-site;
index index.html;
try_files $uri $uri/ /index.html;
}
}
```

```bash
# 重新加载 Nginx 配置
systemctl reload nginx
```

### 4. 获取 Let's Encrypt 证书

```bash
# 方法一:使用 Certbot 自动配置(推荐)
# 将 your-domain.com 替换为您的实际域名
certbot --nginx -d your-domain.com --non-interactive --agree-tos --email admin@yourdomain.com --redirect

# 方法二:如果需要多个域名
certbot --nginx -d your-domain.com -d www.your-domain.com --non-interactive --agree-tos --email admin@yourdomain.com --redirect

# 方法三:仅获取证书不自动配置(手动配置)
certbot certonly --nginx -d your-domain.com --non-interactive --agree-tos --email admin@yourdomain.com
```

**参数说明:**
- `--nginx`: 使用 Nginx 插件
- `-d`: 指定域名
- `--non-interactive`: 非交互模式
- `--agree-tos`: 同意服务条款
- `--email`: 证书过期提醒邮箱
- `--redirect`: 自动将 HTTP 重定向到 HTTPS

### 5. 手动配置 Nginx(如果方法一失败)

如果自动配置失败,请手动配置:

```bash
# 备份原配置文件
cp /etc/nginx/conf.d/your-site.conf /etc/nginx/conf.d/your-site.conf.backup

# 编辑配置文件
vi /etc/nginx/conf.d/your-site.conf
```

**HTTPS 配置示例:**

```nginx
server {
listen 80;
server_name your-domain.com;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
server_name your-domain.com;

# SSL 证书路径
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

# SSL 配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

# 您的网站配置
location / {
root /var/www/your-site;
index index.html;
try_files $uri $uri/ /index.html;
}
}
```

```bash
# 测试并重新加载 Nginx
nginx -t
systemctl reload nginx
```

### 6. 配置证书自动续期

#### 方法一:使用 systemd timer(推荐)

```bash
# 创建续期服务文件
cat > /etc/systemd/system/certbot-renewal.service << 'EOF'
[Unit]
Description=Let's Encrypt SSL Certificate Renewal
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew --quiet --deploy-hook "systemctl reload nginx"
EOF

# 创建定时器文件
cat > /etc/systemd/system/certbot-renewal.timer << 'EOF'
[Unit]
Description=Daily Let's Encrypt SSL Certificate Renewal Timer

[Timer]
OnCalendar=daily
RandomizedDelaySec=1h
Persistent=true

[Install]
WantedBy=timers.target
EOF

# 重新加载 systemd 配置
systemctl daemon-reload

# 启用并启动定时器
systemctl enable certbot-renewal.timer --now

# 检查定时器状态
systemctl status certbot-renewal.timer
systemctl list-timers certbot-renewal.timer
```

#### 方法二:使用 crontab(备选)

```bash
# 编辑 crontab
crontab -e

# 添加以下内容(每天凌晨 3 点检查续期)
0 3 * * * certbot renew --quiet --deploy-hook 'systemctl reload nginx'
```

### 7. 验证配置

```bash
# 1. 检查证书信息
certbot certificates

# 2. 测试 HTTPS 访问
curl -I https://your-domain.com/

# 3. 测试自动重定向
curl -I http://your-domain.com/

# 4. 测试证书续期(不会实际续期)
certbot renew --dry-run

# 5. 查看 Nginx 错误日志
tail -f /var/log/nginx/error.log

# 6. 查看 Certbot 日志
tail -f /var/log/letsencrypt/letsencrypt.log
```

## 常用管理命令

### 证书管理

```bash
# 查看已安装的证书
certbot certificates

# 手动续期所有证书
certbot renew

# 续期特定证书
certbot renew --cert-name your-domain.com

# 撤销证书
certbot revoke --cert-path /etc/letsencrypt/live/your-domain.com/cert.pem

# 删除证书
certbot delete --cert-name your-domain.com
```

### Nginx 管理

```bash
# 检查配置文件语法
nginx -t

# 重新加载配置(不中断服务)
systemctl reload nginx

# 重启服务
systemctl restart nginx

# 查看状态
systemctl status nginx
```

## 故障排查

### 1. 证书获取失败

**问题:DNS 解析失败**
```bash
# 检查域名是否解析到正确 IP
nslookup your-domain.com
dig your-domain.com +short

# 确保防火墙开放 80 和 443 端口
# 对于 Amazon Linux 2023 / Amazon Linux 2
sudo iptables -L -n | grep -E ':(80|443)'

# 对于使用 Security Groups 的 EC2 实例
# 请在 AWS 控制台确认入站规则包含 80 和 443 端口
```

**问题:端口被占用**
```bash
# 检查 80 和 443 端口占用情况
netstat -tlnp | grep -E ':(80|443)'
ss -tlnp | grep -E ':(80|443)'
```

### 2. 自动续期失败

**问题:定时器未运行**
```bash
# 检查定时器状态
systemctl status certbot-renewal.timer

# 手动启动定时器
systemctl start certbot-renewal.timer

# 查看定时器日志
journalctl -u certbot-renewal.timer
journalctl -u certbot-renewal.service
```

**问题:证书续期测试失败**
```bash
# 运行详细测试
certbot renew --dry-run --force-renewal

# 查看详细日志
certbot renew --dry-run --force-renewal -v
```

### 3. HTTPS 无法访问

**问题:证书链不完整**
```bash
# 检查证书文件
ls -la /etc/letsencrypt/live/your-domain.com/

# 应该包含以下文件:
# cert.pem chain.pem fullchain.pem privkey.pem README
```

**问题:Nginx 配置错误**
```bash
# 检查 Nginx 错误日志
tail -100 /var/log/nginx/error.log

# 测试配置文件
nginx -t

# 如果配置正确,重新加载
systemctl reload nginx
```

## 证书路径说明

Let's Encrypt 证书文件位于 `/etc/letsencrypt/live/your-domain.com/` 目录:

- **fullchain.pem**: 完整证书链(服务器证书 + 中间证书)
- **privkey.pem**: 私钥文件
- **chain.pem**: 中间证书
- **cert.pem**: 服务器证书

**重要**:Nginx 配置中应使用 `/etc/letsencrypt/live/your-domain.com/fullchain.pem` 和 `/etc/letsencrypt/live/your-domain.com/privkey.pem`,而不是直接链接到 archive 目录,因为 live 目录包含符号链接,会在证书更新时自动指向最新证书。

## 安全建议

1. **定期备份证书**
```bash
# 备份 Let's Encrypt 目录
tar -czf /backup/letsencrypt-$(date +%Y%m%d).tar.gz /etc/letsencrypt/
```

2. **监控证书过期**
```bash
# 查看证书过期日期
certbot certificates | grep "Expiry Date"
```

3. **使用强密码保护私钥**
```bash
# 设置私钥文件权限(仅 root 可读)
chmod 600 /etc/letsencrypt/live/your-domain.com/privkey.pem
```

## 多域名证书

如果您需要为多个域名配置证书:

```bash
# 为多个域名获取单个证书
certbot --nginx -d domain1.com -d www.domain1.com -d domain2.com -d www.domain2.com --non-interactive --agree-tos --email admin@yourdomain.com --redirect

# 为不同域名分别获取证书
certbot --nginx -d domain1.com --non-interactive --agree-tos --email admin@domain1.com --redirect
certbot --nginx -d domain2.com --non-interactive --agree-tos --email admin@domain2.com --redirect
```

## 注意事项

1. **域名 DNS 解析**:确保域名已正确解析到服务器 IP,否则无法获取证书
2. **防火墙设置**:确保 80 和 443 端口对外开放
3. **证书有效期**:Let's Encrypt 证书有效期为 90 天,系统会自动续期
4. **续期限制**:Let's Encrypt 有速率限制,同一域名每周最多获取 5 个证书
5. **邮箱通知**:证书过期前会发送邮件到指定邮箱,请确保邮箱可访问

## 参考资源

- Let's Encrypt 官网: https://letsencrypt.org/
- Certbot 文档: https://certbot.eff.org/docs/
- Nginx SSL 配置: https://nginx.org/en/docs/http/configuring_https_servers.html

---

**配置完成后,请使用以下命令验证:**

```bash
# 检查证书
certbot certificates

# 测试 HTTPS
curl -I https://your-domain.com/

# 检查续期定时器
systemctl status certbot-renewal.timer
```

如果所有检查都通过,说明 HTTPS 证书配置成功!

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

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

相关文章

多工厂协同模式下,MES管理系统如何平衡“集团管控”与“边缘自治”

许多企业在业务扩张初期&#xff0c;往往会被早期部署的“烟囱式”MES系统困住。当第二家、第三家工厂在异地拔地而起时&#xff0c;如果系统架构缺乏前瞻性&#xff0c;原有系统往往会因为无法支撑跨地域的数据吞吐和多工厂的业务差异&#xff0c;最终演变成多个互不相通的信息…

创客匠人 AI 智能体:创始人 IP 知识变现的业务结构化革命

在知识付费行业规模突破 3000 亿元的背后&#xff0c;隐藏着一个残酷的现实&#xff1a;80% 的创始人 IP 年营收难以突破千万&#xff0c;核心瓶颈并非流量不足或内容不佳&#xff0c;而是业务缺乏 “可结构化” 能力。当 AI 技术从 “内容生成” 升级为 “业务执行”&#xff…

java基础-Iterator 接口

Java 中的 Iterator 接口是 Java 集合框架&#xff08;Java Collections Framework&#xff09;中的一个核心接口&#xff0c;用于遍历集合中的元素。它提供了一种统一的方式来访问集合中的元素&#xff0c;而不需要暴露集合的内部结构。1. Iterator 接口的主要方法public inte…

CLAUDE.md - 让AI理解你的项目的秘密武器

CLAUDE.md - 让AI理解你的项目的秘密武器核心观点&#xff1a;一个写得好的CLAUDE.md可以将Claude Code的生产力提升50-100%&#xff0c;这是上下文管理中最高效的投资。 关键词&#xff1a;CLAUDE.md、上下文管理、项目文档、Claude Code配置、工作流优化导读 你将学到&#x…

AI Agent:下一代人工智能的核心范式

AI Agent&#xff1a;下一代人工智能的核心范式 引言 AI Agent&#xff08;人工智能智能体&#xff09;是当前AI领域最热门的话题之一。它代表了从被动响应到主动思考、规划和执行的范式转变。本文将深入剖析AI Agent的核心概念、技术架构以及其广阔的应用前景。 什么是AI Agen…

从数字协同到业务执行:创客匠人 AI 智能体重新定义知识变现的 “结果交付”

当知识付费用户规模突破 6.4 亿&#xff0c;行业却陷入 “叫好不叫座” 的尴尬境地&#xff1a;52.4% 的用户认为知识付费 “宣传与实际不符”&#xff0c;54.3% 抱怨 “学完没有实际效果”。这一矛盾的核心&#xff0c;是传统知识变现模式停留在 “提供内容” 层面&#xff0c…

项目经理别瞎忙!3个能力+1个工具,项目延期从此是路人

项目延期、团队内耗、需求反复&#xff0c;是很多项目经理日常面临的“三座大山”。想要打破困局&#xff0c;不用靠“拼命加班”&#xff0c;关键是抓准核心能力&#xff0c;用对工具和方法&#xff0c;就能实现高效控场。 一、目标拆解能力&#xff1a;把“大目标”拆成“可落…

创客匠人 AI 智能体:知识变现的数字劳动力革命,重构 IP 人力模型

在知识付费行业&#xff0c;“人力瓶颈” 始终是创始人 IP 难以突破的增长枷锁 —— 某行业报告显示&#xff0c;75% 的知识 IP 团队人力成本占比超 60%&#xff0c;却仍面临 “人不够用、效率低下、服务断层” 的困境。传统模式中&#xff0c;知识变现高度依赖 “创始人 核心…

车用直流有刷电机市场调研2026:应用场景、产业链及市场演进趋势分析

根据QYResearch调研&#xff0c;2025年全球车用直流有刷电机市场销售额达到了116.8亿美元&#xff0c;预计2032年市场规模将为137.8亿美元&#xff0c;2026-2032期间年复合增长率&#xff08;CAGR&#xff09;为2.4%。车用直流有刷电机多采用永磁直流&#xff08;PMDC&#xff…

[特殊字符]_Web框架性能终极对决:谁才是真正的速度王者[20260120170511]

作为一名拥有10年开发经验的全栈工程师&#xff0c;我经历过无数Web框架的兴衰更替。从早期的jQuery时代到现在的Rust高性能框架&#xff0c;我见证了Web开发技术的飞速发展。今天我要分享一个让我震惊的性能对比测试&#xff0c;这个测试结果彻底改变了我对Web框架性能的认知。…

父亲那一眼,看得人心都碎了!《我的朋友安德烈》后劲太大

电影《我的朋友安德烈》近日上映&#xff0c;靠着观众的口碑口口相传&#xff0c;让这部电影成了这个季节最“意难平”的电影。走出影院的观众都说&#xff1a;“这片子后劲儿太大了&#xff01;”电影中最让人难忘的一幕&#xff0c;莫过于小李默和父亲一起吃饺子的那场戏。没…

创客匠人 AI 智能体:知识变现的资产化革命,让 IP 价值实现复利增长

在知识付费行业&#xff0c;多数创始人 IP 面临 “增长不可持续” 的困境&#xff1a;课程更新依赖个人精力&#xff0c;用户资产难以沉淀&#xff0c;一旦停止投入&#xff0c;业务便陷入停滞。这一困境的核心&#xff0c;是知识变现的价值形态仍停留在 “单次服务” 层面&…

[特殊字符]_内存管理深度解析:如何避免GC导致的性能陷阱[20260120171107]

作为一名经历过无数性能调优案例的工程师&#xff0c;我深知内存管理对Web应用性能的影响有多大。在最近的一个项目中&#xff0c;我们遇到了一个棘手的性能问题&#xff1a;系统在高并发下会出现周期性的延迟飙升&#xff0c;经过深入分析&#xff0c;发现问题根源竟然是垃圾回…

M3芯片MacBook真的支持多显示器吗?全方位解析与解决方案

苹果于2023年10月30日发布M3芯片&#xff0c;为MacBook产品线带来显著的性能升级和新功能。对于依赖多显示器进行工作、游戏或创意项目的用户来说&#xff0c;最关心的问题莫过于&#xff1a;M3芯片是否支持外接显示器&#xff1f;如果能&#xff0c;又能支持多少台&#xff1f…

[特殊字符]_内存管理深度解析:如何避免GC导致的性能陷阱[20260120171703]

作为一名经历过无数性能调优案例的工程师&#xff0c;我深知内存管理对Web应用性能的影响有多大。在最近的一个项目中&#xff0c;我们遇到了一个棘手的性能问题&#xff1a;系统在高并发下会出现周期性的延迟飙升&#xff0c;经过深入分析&#xff0c;发现问题根源竟然是垃圾回…

霍尼韦尔模块8C-PDOD51

核心概述8C-PDOD51 是霍尼韦尔 Experion LS 和 PlantCruise 系统&#xff08;基于C300控制器平台&#xff09;中的一员。它是一个可组态的、8通道、数字量输出&#xff08;DO&#xff09;模块&#xff0c;用于驱动现场设备&#xff0c;如继电器、电磁阀、指示灯、电机启动器等。…

基于小程序中医食谱推荐系统的设计(源码+论文+部署+安装)

感兴趣的可以先收藏起来&#xff0c;还有在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望可以帮到大家。一、程序背景随着现代生活节奏加快&#xff0c;人们饮食习惯愈发不规律&#xff0c;高热量、低营养食物摄…

创客匠人 + AI 智能体:创始人 IP 变现的效率革命,知识变现进入自动化时代

2025 年&#xff0c;我国知识付费行业市场规模已逼近 3000 亿元&#xff0c;用户规模达 6.4 亿人。但繁华背后&#xff0c;71.7% 的受访青年将内容质量视为选择核心&#xff0c;69% 的用户抱怨内容参差不齐&#xff0c;54.3% 吐槽缺乏后续服务。当知识付费告别野蛮生长&#xf…

解决 npm ERR! code EINTEGRITY 报错的 3 种方法(亲测有效)

在使用 npm 安装依赖时&#xff0c;很多人都会遇到这样一个报错&#xff1a; npm ERR! code EINTEGRITY npm ERR! sha512-xxxx integrity checksum failed表面看是“完整性校验失败”&#xff0c;但真正原因并不止一个。 如果你只是反复 npm install&#xff0c;大概率会一直失…

Java:Gradle 5.0

Gradle 5.0 是一个在性能、依赖管理和开发体验方面都有显著提升的版本&#xff0c;被认为是 Gradle 历史上最快、最强大的发布版本之一‌。 1、主要特性与改进包括&#xff1a;‌更快的构建速度‌&#xff1a;引入了改进的增量编译和增量注解处理功能&#xff0c;使得 Java 编译…