yanchang
yanchang
发布于 2026-06-20 / 3 阅读
0
0

部署Certimate管理证书

📦 第一阶段:下载与初始化

我们将 Certimate 部署在 /opt/certimate 目录下,以符合 Linux 软件安装规范。

1. 下载二进制文件 前往 Certimate 的 GitHub Releases 页面,下载对应架构的压缩包并解压至目标目录:

Bash

sudo mkdir -p /opt/certimate
cd /opt/certimate
# 假设已经下载并解压,确保包含可执行文件 `certimate`

2. 赋予执行权限并测试运行 首次运行会自动完成数据库和配置文件的初始化:

Bash

sudo chmod +x certimate
sudo ./certimate serve --http=0.0.0.0:9654

注:看到 migration doneVisit the website 日志后,按 Ctrl + C 退出。

初始的管理员账号及密码:

  • 账号:admin@certimate.fun

  • 密码:1234567890

⚙️ 第二阶段:配置 systemd 系统服务

为了让 Certimate 在后台稳定运行并实现开机自启,需要将其注册为系统服务。

1. 创建服务配置文件

Bash

sudo nano /etc/systemd/system/certimate.service

2. 写入以下配置 关键细节:ExecStart 中的参数不能带双引号,且必须监听 0.0.0.0 以允许 Authentik 所在的 Docker 容器访问。

Ini, TOML

[Unit]
Description=Certimate SSL Management Service
After=network.target

[Service]
Type=simple
# 默认使用 root 运行以确保有权限读取 /opt 下的文件及读写本地证书。
# 如果你严格限制了权限,可以将其改为 User=yanchang
User=root
WorkingDirectory=/opt/certimate
ExecStart=/opt/certimate/certimate serve --http="0.0.0.0:9654"
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

3. 重载系统服务并启动

Bash

sudo systemctl daemon-reload
sudo systemctl enable --now certimate
sudo systemctl status certimate # 检查是否为 active (running)

4. 稍微修改一下nginx配置文件

server {
    # 1. 监听端口
    listen 9001 ssl;
    # 2. 域名 (请确保这里和 Authentik 后台填写的域名一致)
    server_name *********.** *.*********.**;

    # SSL 证书配置 (路径请确认无误)
    ssl_certificate     /etc/nginx/ssl/www.yanchang.pem;
    ssl_certificate_key /etc/nginx/ssl/www.yanchang.key;

    # SSL 协议优化
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # Authentik 不需要太大的上传限制,但为了上传头像/图标,保留适量大小
    client_max_body_size 100M;

    location / {
        # 指向 Authentik 的 HTTP 端口
        proxy_pass http://127.0.0.1:9000;

        # ========================================================
        # 基础跳转与 Host 识别
        # ========================================================
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # ========================================================
        # 【新增修复】WebSocket 与 SSE (EventSource) 长连接支持
        # ========================================================
        # 强制使用 HTTP/1.1,这是 WebSocket 和 SSE 正常工作的前提
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 彻底关闭代理缓冲!让实时日志数据流能够“来一点发一点”,而不是被 Nginx 拦截等待
        proxy_buffering off;
        proxy_cache off;
        chunked_transfer_encoding on;

        # ========================================================
        # 【修改】超时时间优化
        # ========================================================
        proxy_connect_timeout 300s;
        # 将读写超时时间延长至 1 小时,防止执行耗时较长的工作流时连接被 Nginx 杀掉
        proxy_send_timeout 3600s;
        proxy_read_timeout 3600s;
    }
}

🛡️ 第三阶段:配置宿主机防火墙 (UFW)

为了实现“零信任”安全架构,防止内网用户直接绕过网关访问 Certimate,我们需要在 Ubuntu 的防火墙中进行精确授权。

1. 仅允许 Docker 容器网段访问 9654 端口 假设你的 Docker 容器默认网段为 172.16.0.0/12(可根据实际情况调整),执行以下命令:

Bash

sudo ufw allow from 172.16.0.0/12 to any port 9654 proto tcp

通过此步骤,外部公网和普通局域网设备直接访问 192.168.0.250:9654 将被拦截,只有 Authentik 容器能与 Certimate 通信。

🔐 第四阶段:配置 Authentik 认证网关

在 Authentik 管理员界面中创建一个新的“代理 (Proxy)”提供程序创建,并绑定到前哨 (Outpost)。

1. 核心提供程序 (Provider) 配置避坑点

  • 提供程序类型: 代理 (Proxy)

  • 外部主机: https://certimate.*********.**:9001严禁在结尾添加 /

  • 内部主机: http://192.168.0.250:9654 (需确保填写的宿主机局域网 IP 正确)

2. 绑定前哨 (Outpost) 这是最容易遗漏的一步。配置完应用后,必须去更新前哨:

  1. 进入 应用程序 -> 前哨 (Outposts)

  2. 编辑你正在使用的 authentik Embedded Outpost

  3. 应用程序 列表中,找到并高亮选中你的 Certimate 应用。

  4. 保存配置,等待 10 秒左右让前哨刷新路由规则。


评论