十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Certbot 安装指南:Snap、Docker 与 Pip 三种部署方式的完整实践

Certbot 安装指南:Snap、Docker 与 Pip 三种部署方式的完整实践 网络安全CLI后端【免费下载链接】certbotCertbot is EFFs tool to obtain certs from Lets Encrypt and (optionally) auto-enable HTTPS on your server. It can also act as a client for any other CA that uses the ACME protocol.项目地址https://gitcode.com/gh_mirrors/ce/certbot点击查看免费下载Certbot 是 EFF 出品的 ACME 协议客户端用于从 Lets Encrypt 等 CA 自动获取证书并可选在服务器上自动启用 HTTPS。本文基于 certbot/docs/install.rst 的官方安装文档结合本仓库的 Snap 构建配置、Docker 镜像定义与插件源码系统讲解 Certbot 在服务器上的系统要求、Snap 推荐安装、Docker 容器化部署、Pip 虚拟环境安装以及旧版certbot-auto的迁移清理帮助你根据实际环境选择最合适的安装路径并正确管理证书文件。系统要求System Requirements在动手安装之前请先确认目标服务器满足以下条件要求说明操作系统Linux、macOS、BSD 和 Windows权限Linux/BSD 上推荐 root 权限Windows 上需要 Administrator 权限网络开放 80 端口用于 HTTP-01 域名验证关于权限官方文档明确指出Certbot 以 root 权限运行时最有用因为这样它才能自动为 Apache 和 nginx 配置 TLS/SSL。同时要理解 Certbot 的设计定位——它应当直接运行在 Web 服务器上通常由系统管理员操作。在大多数情况下把 Certbot 安装在个人电脑上并不是有用的选择因为 ACME 域名验证需要从公网访问到你的服务器且证书签发后需要安装到实际提供服务的机器上。以下所有安装与运行说明均以服务器环境为前提。安装方式总览官方建议优先前往 certbot.eff.org 的 Instructions 页面按你的服务器软件与操作系统选择对应的安装指引这是最稳妥、与官方测试同步的方案。除该系统化指引外本仓库文档提供以下备选路径按推荐程度排序Snap官方推荐——跨发行版统一、自动续期开箱即用Docker备选方案 1——快速获取证书但无法自动安装证书或配置 Web 服务器Pip备选方案 2——仅最佳努力best effort支持且必须配合虚拟环境第三方发行版备选方案 3——满足特定需求但维护方在项目之外LTS 发行版上易过时certbot-auto已弃用——旧版脚本安装方式需要主动清理。Snap 安装推荐Snap 是官方推荐的安装方式其最大优势是所有使用 Snap 的系统安装指令完全相同不存在发行版之间的差异。你只需在 certbot.eff.org 的 Instructions 页面选择你的服务器软件并在 System 下拉框中选择 snapd 即可。适用条件与架构支持绝大多数现代 Linux 发行版基本覆盖所有使用 systemd 的系统都可以通过 Snap 安装 CertbotSnap 包提供x86_64、ARMv7 和 ARMv8三种架构Snap 版本自带自动续期等特性确保你始终运行最新版本且无需额外配置定时任务。从仓库构建配置看 Snap 包的设计本仓库的 snap/snapcraft.yaml 完整定义了 Certbot Snap 包的构建方式从中可以验证文档中“自动化续期预配置”的说法name: certbot summary: Automatically configure HTTPS using Lets Encrypt confinement: classic base: core24 apps: certbot: command: bin/python3 -s $SNAP/bin/certbot renew: command: bin/python3 -s $SNAP/bin/certbot -q renew daemon: oneshot # Run approximately twice a day with randomization timer: 00:00~24:00/2关键细节采用classic安全等级confinement意味着 Snap 内的 Certbot 可以像普通系统程序一样读写系统目录如/etc/letsencrypt、Apache/nginx 配置内置一个名为renew的 systemd 定时服务使用timer: 00:00~24:00/2让certbot -q renew每天大约运行两次且带随机化这正是文档所说“自动化证书续期预配置”的底层实现——你装完 Snap 后无需自己编写 cron 或 systemd timer构建时会打包acme、certbot、certbot-apache、certbot-nginx等核心组件见parts.certbot.python-packages因此 Snap 版天然包含 Apache/nginx 安装器插件。如果你的系统无法使用 Snap则需改用下面介绍的替代方案。方案一Docker 部署Docker 是获取证书的“惊人简单且快速”的方式但有一个关键限制需要明确这种模式无法安装证书也无法配置你的 Web 服务器因为安装器插件无法从 Docker 容器内部访问你的 Web 服务器。官方建议大多数用户使用 certbot.eff.org 的 Instructions 指引只有在明确了解其限制并有充分理由时才使用 Docker。使用 Docker 前必须了解的两件事证书的存放位置Docker 容器内的文件系统是临时的必须通过卷挂载把证书目录持久化到宿主机。因此使用 Docker 前务必阅读 Where are my certificates? 一节学会手动管理证书推荐的密码套件可参考 ciphersuites 页面 了解推荐的密码套件配置。如果这些概念让你感到困难就应该改用官方推荐的系统安装方式让安装器插件替你处理这两个难题。基本用法与命令解析在证书域名解析到的服务器上安装 Docker 后执行以下命令sudo docker run -it --rm --name certbot \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/lib/letsencrypt:/var/lib/letsencrypt \ certbot/certbot certonly逐项解读命令片段作用-it --rm --name certbot交互式运行、退出即删除容器、固定容器名-v /etc/letsencrypt:/etc/letsencrypt把宿主机的证书目录挂载进容器保证证书写回宿主机-v /var/lib/letsencrypt:/var/lib/letsencrypt持久化 Certbot 的工作目录账号、恢复用的 Challenge 数据等certbot/certbot官方镜像名certonly只获取证书、不做任何安装配置的命令执行certonly后证书会被放置到宿主机即挂载点的/etc/letsencrypt/live目录下。由于 Docker 模式下无法在容器内安装证书你必须按照 Web 服务器厂商推荐的手动流程完成证书安装。本仓库的 tools/docker/Dockerfile 印证了上述用法设计镜像基于python:3.14-alpine3.23声明了ENTRYPOINT [ certbot ]因此命令直接以certbot开头、EXPOSE 80 443并声明VOLUME /etc/letsencrypt /var/lib/letsencrypt与文档中的卷挂载路径完全对应。使用 Standalone 插件时务必映射端口如果使用Standalone认证插件Certbot 会在容器内自己启动一个临时 HTTP 服务器来响应 ACME 验证请求因此你必须把该插件使用的端口暴露到容器外部在certbot/certbot之前加上类似-p 80:80或-p 443:443的端口映射。从源码看Standalone 插件的实现位于 certbot/src/certbot/_internal/plugins/standalone.py该认证器在所需端口上创建自己的临时 TCP 监听器以响应来自 CA 的 http-01 挑战因此不依赖任何现有服务器程序。它会在/.well-known/acme-challenge/请求路径下提供必要的验证文件仅支持 HTTP 挑战不支持通配符。这意味着使用 Standalone 时宿主机 80 端口上不能有别的程序占用否则绑定会失败。使用 DNS 插件镜像完成域名验证官方在 Docker Hub 上还为每个 DNS 插件提供了独立镜像用于通过 DNS 方式自动化域名验证适合申请通配符证书或在非目标 Web 服务器上运行 Certbot。用法很简单把命令中的certbot/certbot替换为对应插件镜像名即可。例如使用 Amazon Route 53 插件sudo docker run -it --rm --name certbot \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/lib/letsencrypt:/var/lib/letsencrypt \ certbot/dns-route53 certonly使用 DNS 插件时你可能还需要额外挂载目录或添加参数以提供 DNS API 凭证具体见 DNS 插件文档。本仓库中每个 DNS 插件都有独立子项目如 certbot-dns-route53、certbot-dns-cloudflare、certbot-dns-digitalocean 等镜像命名与子项目一一对应。方案二Pip 安装通过 Pip 安装 Certbot 有以下两点重要前提仅提供最佳努力best effort支持——不保证在所有环境都能顺利工作必须使用虚拟环境virtual environment——不要把 Certbot 直接装进系统级 Python 环境。具体的 Pip 安装步骤同样在 certbot.eff.org 的 Instructions 页面选择你的服务器软件并在 System 下拉框中选择 pip 获取。从 certbot/pyproject.toml 可以确认源码级约束Certbot 要求Python 3.10requires-python 3.10并声明支持 Python 3.10 至 3.14。安装包会注册certbot certbot.main:main控制台入口点同时通过[project.entry-points.certbot.plugins]声明内置插件manual、null、standalone、webroot因此源码安装后可直接使用这些插件。建议在虚拟环境中安装本仓库的acme与certbot两个包二者位于 acme 与 certbot 目录并遵循 tools/requirements.txt 中固定的依赖版本约束以获得可复现的环境。方案三第三方发行版除了官方途径还存在面向特定需求的第三方发行版。需要注意这些发行版通常由第三方在 Certbot 项目之外维护且在 LTS 风格的发行版上很容易快速过时。如果你的系统要求必须使用这类渠道建议保持谨慎并关注其更新频率。certbot-auto已弃用的旧安装方式项目曾经提供一个名为certbot-auto的 shell 脚本用于在 UNIX 操作系统上安装 Certbot但该脚本已不再受支持。官方文档明确要求用户移除它迁移需要完成以下三件事删除自动续期任务如果你按照旧指引添加了 cron 任务或 systemd timer 来自动运行 certbot-auto 续期证书请将其删除。若是按官方指引配置的可执行以下命令清除/etc/crontab中的相关条目sudo sed -i /certbot-auto/d /etc/crontab删除 certbot-auto 脚本本身如果按旧指引放在了/usr/local/bin执行sudo rm /usr/local/bin/certbot-auto删除 certbot-auto 创建的安装目录sudo rm -rf /opt/eff.org完成这三步后建议改用本文介绍的 Snap 或官方推荐方式重新安装以获得受支持的自动续期能力。补充证书在哪里安装后必读无论通过哪种方式安装了解证书的存放位置都是必需的尤其是 Docker 用户需要手动管理证书。证书文件统一存放在/etc/letsencrypt/live/$domain/其中$domain为证书名称命名遵循以下约定优先使用--cert-name指定的名称未指定时使用--domains的第一个域名若第一个域名是通配符域名如*.example.com证书名取example.com若与已有证书如example.com重名冲突则使用数字序列构造新名称如example.com-001。目录内包含的关键文件及用途文件说明privkey.pem证书私钥必须始终保密默认权限0600Apache 对应SSLCertificateKeyFileNginx 对应ssl_certificate_keyfullchain.pem完整证书链服务器证书 中间证书服务器证书排在最前Apache 2.4.8 对应SSLCertificateFileNginx 对应ssl_certificatecert.pem/chain.pem服务器证书与中间证书分开存放的较少见组合若使用必须两个都提供否则部分浏览器会报 This Connection is Untrusted 错误配置服务器时应直接引用这些文件或创建符号链接而不要复制——续期时/etc/letsencrypt/live会自动更新为最新文件。另外注意出于历史原因这些目录以0700权限创建仅 root 可访问如果你的服务器会以非 root 用户读取私钥需要配合chgrp、chmod 0640调整privkey.pem的属组与权限。小结首选Snap跨发行版统一安装、自带每日两次随机化自动续期见 snap/snapcraft.yamlDocker适合快速取证但需自行管理证书与 Web 服务器配置务必按 Where are my certificates? 理解证书布局Pip仅最佳努力支持且必须使用虚拟环境注意 Python 3.10 的版本门槛certbot-auto 已弃用请按三步清理并迁移到受支持的方式。赞分享网络安全CLI后端【免费下载链接】certbotCertbot is EFFs tool to obtain certs from Lets Encrypt and (optionally) auto-enable HTTPS on your server. It can also act as a client for any other CA that uses the ACME protocol.项目地址https://gitcode.com/gh_mirrors/ce/certbot点击查看免费下载相关推荐Xiaomusic完整安装指南从Docker到pip多种部署方式详解Xiaomusic完整安装指南从Docker到pip多种部署方式详解 想要让小爱同学为你播放音乐吗Xiaomusic是一个开源项目专门用于让小爱同学播放音后端智能硬件音视频TRL 安装指南PyPI、源码与 Docker 三种方式完整实践TRL 安装指南PyPI、源码与 Docker 三种方式完整实践 本指南完整讲解 TRLTrain transformer language models人工智能大模型强化学习RLHF预训练微调LoRAmkdocs-material安装指南pip、Docker、Git三种方式快速上手mkdocs material安装指南pip、Docker、Git三种方式快速上手 MkDocs Material是基于MkDocs轻量级Markdown文前端文档模板引擎创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表