




















本文最后更新于146 天前,其中的信息可能已经过时,如有错误请发送邮件到[email protected]
网站部署HTTPS,最头疼的问题之一就是HTTPS证书申请——要么流程复杂,要么验证失败,尤其是没有公网80端口时更是无从下手。经过多次踩坑,我发现certd容器(开源证书工具)是最适合新手的:无需暴露服务器端口、自动续期、配置简单,全程用Docker一键部署。这篇文章会把每一步拆解得明明白白,即使是技术小白也能跟着操作成功!
打开服务器的终端(Windows用PowerShell,Linux/Mac用Terminal),执行以下命令,创建一个专门存放certd文件的目录:
# 通用命令,Windows/Linux/Mac都能用
mkdir certd && cd certdcertd官方提供了现成的docker-compose.yaml文件,我们直接下载(如果下载失败,后面有手动新建的方法):
# Linux/Mac用户(有wget)
wget https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml -O docker-compose.yaml
# Windows PowerShell用户(无wget,用内置命令)
Invoke-WebRequest -Uri "https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml" -OutFile "docker-compose.yaml"
# 备用方案:浏览器手动下载
打开链接:https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
右键 → 另存为 → 保存到刚才创建的「certd」目录,文件名保持「docker-compose.yaml」(别改成.txt)用记事本(Windows)或 nano(Linux)打开docker-compose.yaml文件,只需要修改3个地方,其他保持默认:
version: '3'
services:
certd:
image: ghcr.io/certd/certd:v2.10.0 # 指定版本,避免自动更新出问题
container_name: certd # 容器名称,方便管理
restart: always # 容器崩溃自动重启,不用手动启动
ports:
- "7001:7001" # 端口映射:左边是服务器端口,右边是容器端口
# 默认7001 如果7001被占用,改左边的7001为其他端口(如7081)
environment:
- TZ=Asia/Shanghai # 时区设置,避免日志时间错乱
volumes:
- ./data:/app/data # 数据持久化:证书、配置会存在这里,容器删了也不丢
- ./logs:/app/logs # 日志目录,申请失败时看日志找原因
- /etc/localtime:/etc/localtime:ro在「certd」目录下执行以下命令,启动容器:
# Docker Compose V2(推荐,Docker Desktop内置)
docker compose up -d
# 若提示「docker compose: 未找到命令」,用V1命令(Linux手动装的docker-compose)
docker-compose up -ddocker ps | grep certd,如果看到「Up X minutes」,说明certd已经在后台运行了!打开浏览器,输入「http://服务器IP:端口号」(比如我的服务器,就本地用就本地IP是172.0.0.0,端口是7001,所以访问http://172.0.0.0:7001);
admin,默认密码:123456;这是申请证书的核心步骤,新手容易踩坑,一定要仔细看!
API Token是certd调用Cloudflare API的“钥匙”,必须给对权限,否则会报403错误:
xxx.top),只授权这个域名,更安全;curl ifconfig.me,或浏览器打开ip.cn查看);回到certd网页后台,跟着步骤走,几分钟就能申请成功:
xxx.com,支持泛域名*.xxx.com,需要就填);docker ps | grep certd,若没显示,执行docker compose logs certd看报错。https://api.cloudflare.com(执行curl https://api.cloudflare.com测试);证书文件在「certd/data/certs/你的域名/」目录下,核心文件是:
fullchain.pem:证书链文件;privkey.pem:私钥文件;server {
listen 443 ssl;
server_name xxx.top; # 你的域名
ssl_certificate /path/to/certd/data/certs/xxx.top/fullchain.pem; # 证书链路径
ssl_certificate_key /path/to/certd/data/certs/xxx.top/privkey.pem; # 私钥路径
# 其他配置(如网站根目录、反向代理等)
}certd默认会自动检测证书有效期,提前18(默认)天自动续签,续签后证书文件会自动更新,无需手动操作。可以在「certd后台 → 系统设置 → 证书续期」中查看续期配置。
作为新手,第一次申请HTTPS证书可能会遇到各种小问题,但只要跟着步骤走,尤其是注意Cloudflare API Token的权限配置和Zone ID的正确性,就能顺利搞定。certd+Cloudflare的组合不仅免费,还能自动续期,后续不用再操心证书过期的问题,非常适合个人网站、博客等场景。
如果操作过程中遇到其他问题,欢迎在评论区交流~ 技术之路,踩坑才会成长,希望这篇指南能帮到同样是新手的你!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。