惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
量子位
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
B
Blog
U
Unit 42
C
Check Point Blog
I
InfoQ
aimingoo的专栏
aimingoo的专栏
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
云风的 BLOG
云风的 BLOG
宝玉的分享
宝玉的分享
爱范儿
爱范儿

博客园 - 星河赵

如何 限制大模型(LLM)仅基于知识库(RAG架构)回答 学习Ai LangChain&&LangGraph Vue 打包区分线上测试 微信支付申请相关资料 mysql 常用命令 熟练使用 mysql flask fastapi mysql 常用命令 LangChain AI 客服 Agent 项目学习笔记 海外stripe 聚合支付 ffmpeg 介绍 AE中制作带可替换屏幕的视频模版 记录|AI超写实短视频制作流程+提示词 服务端部署Vue 在Pycharm 中使用 Python Module 方式启动 uvicorn Conda 虚拟环境完整指南 CentOS / OpenCloudOS 服务器如何安装远程桌面 Python 项目模块导入问题解决方案 2026 谷歌 Antigravity 最新安装教程! Vscode 常用配置 如何修改 Redis 数据存放路径 Vue 后台项目 Nginx 部署笔记(SPA / Vite 构建) Python -m 用法(极简版) Ubuntu 上安装 MongoDB 并启用事务的完整流程 mac 微信双开新方法 nginx 对静态资源进行压缩 HMAC-SHA256 请求签名与验签实践(Python 可直接复用) python fast api websocket 连接事例 在 Flask 中并发执行任务 Vscode 配置快捷键和JetBrains(pycharm)一样 Linux 服务器的 SSH 登录端口号 从默认的 22 改掉 配置 Docker 镜像加速器
Ubuntu + Nginx 使用 Let's Encrypt 生成 HTTPS 证书
星河赵 · 2026-08-27 · via 博客园 - 星河赵

适用场景:

  • 域名已经解析到服务器公网 IP
  • 服务器使用 Ubuntu + Nginx
  • 例如域名:
light-test.motestxing.com

1. 前置检查

先确认域名解析是否正确:

ping light-test.motestxing.com

确认 80 端口可以正常访问:

http://light-test.motestxing.com/

Nginx 至少需要存在:

server {
    listen 80;
    server_name light-test.motestxing.com;
}

2. 推荐使用 Snap 安装 Certbot

如果服务器的系统 Python 曾经给其他项目使用过,不建议使用 apt 版 Certbot

原因是 apt 版 Certbot 会依赖系统 Python,容易出现:

urllib3
requests
requests_toolbelt
cryptography

等包版本冲突。

推荐使用 Snap 版 Certbot,它和现有 Python 环境隔离。

安装:

sudo snap install core
sudo snap refresh core

然后:

sudo snap install --classic certbot

检查:

/snap/bin/certbot --version

也可以创建软链接:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

如果提示文件已经存在,可以直接继续使用:

/snap/bin/certbot

3. 申请 HTTPS 证书

执行:

sudo /snap/bin/certbot --nginx -d light-test.motestxing.com

Certbot 会自动:

  1. 检查域名是否属于这台服务器
  2. 向 Let's Encrypt 申请证书
  3. 修改 Nginx 配置
  4. 配置 HTTPS 443 端口
  5. 配置证书路径

成功后访问:

https://light-test.motestxing.com/

4. 证书保存位置

通常位于:

/etc/letsencrypt/live/light-test.motestxing.com/

主要文件:

fullchain.pem
privkey.pem

Nginx 中类似:

server {
    listen 443 ssl;
    server_name light-test.motestxing.com;

    ssl_certificate /etc/letsencrypt/live/light-test.motestxing.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/light-test.motestxing.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8190;
    }
}

5. HTTP 自动跳转 HTTPS

可以配置:

server {
    listen 80;
    server_name light-test.motestxing.com;

    return 301 https://$host$request_uri;
}

修改 Nginx 后检查:

sudo nginx -t

没有报错后:

sudo systemctl reload nginx

6. 自动续期

Let's Encrypt 证书有效期通常为 90 天。

Snap 安装的 Certbot 会自动处理续期。

可以手动测试:

sudo /snap/bin/certbot renew --dry-run

如果成功,说明自动续期基本没有问题。

7. 查看已有证书

sudo /snap/bin/certbot certificates

可以看到:

Certificate Name
Domains
Expiry Date
Certificate Path
Private Key Path

8. 常见问题:Certbot Python 包冲突

如果出现:

ImportError: cannot import name 'appengine' from 'urllib3.contrib'

并且路径同时出现:

/usr/lib/python3/dist-packages/certbot/

以及:

/usr/local/lib/python3.10/dist-packages/urllib3/

说明:

apt 安装的 Certbot
        ↓
依赖系统 Python
        ↓
加载到了以前 pip 安装的 urllib3
        ↓
版本不兼容

如果服务器系统 Python 给其它项目用过,不要随便卸载或降级 urllib3

sudo pip3 uninstall urllib3

这种操作可能影响其它项目。

更安全的方式是:

sudo apt remove certbot python3-certbot-nginx -y
sudo snap install --classic certbot

然后使用:

sudo /snap/bin/certbot --nginx -d light-test.motestxing.com

9. 免费证书是否可以用于生产环境

可以。

Let's Encrypt 是正规的 CA,主流:

Chrome
Safari
Firefox
Android
iOS

都支持。

对于普通:

Web 网站
H5
API
后台管理系统
测试环境

完全可以使用。

免费证书和普通付费 DV 证书的 HTTPS 加密能力没有本质区别。

付费证书更多优势在于:

  • 企业身份认证
  • 厂商技术支持
  • 企业统一证书管理
  • 特定合规要求

普通业务没有这些需求时,Let's Encrypt 足够使用。

10. 最简操作流程

以后给一个新域名申请 HTTPS,基本记住这几条即可:

# 安装 Certbot
sudo snap install --classic certbot

# 申请证书并自动配置 Nginx
sudo /snap/bin/certbot --nginx -d light-test.motestxing.com

# 检查 Nginx
sudo nginx -t

# 重载 Nginx
sudo systemctl reload nginx

# 测试自动续期
sudo /snap/bin/certbot renew --dry-run

最终访问:

https://light-test.motestxing.com/

即可。