Skip to content

TLS 证书管理

Runixo 所有通信都通过 TLS 加密。本文介绍证书的生成、管理和自定义。

自动证书

Agent 首次启动时自动生成自签名 TLS 证书:

  • 有效期:10 年
  • 密钥算法:ECDSA P-256
  • SAN:自动包含服务器所有网络接口 IP + localhost
  • 存储位置
    • 证书:/etc/runixo/cert.pem
    • 私钥:/etc/runixo/key.pem(权限 0600

安全说明

自签名证书的私钥权限设置为 0600(仅 owner 可读),证书不包含 CA 标志(IsCA: false),防止被用于签发其他证书。

证书指纹

查看当前证书的 SHA256 指纹:

bash
sudo runixo info
# 输出包含:
# TLS Fingerprint: SHA256:a1b2c3d4...

或手动查看:

bash
openssl x509 -in /etc/runixo/cert.pem -noout -fingerprint -sha256

客户端首次连接时会显示证书指纹,请与服务器端核对确认。

使用自定义证书

如果你有自己的证书(如 Let's Encrypt),可以替换自动生成的证书:

1. 准备证书文件

bash
# 确保证书链完整(如果有中间证书)
cat your-cert.pem intermediate.pem > /etc/runixo/cert.pem
cp your-key.pem /etc/runixo/key.pem
chmod 600 /etc/runixo/key.pem

2. 禁用自动生成

编辑 /etc/runixo/agent.yaml

yaml
tls:
  cert: /etc/runixo/cert.pem
  key: /etc/runixo/key.pem
  auto_generate: false

3. 重启 Agent

bash
sudo systemctl restart runixo-agent

Let's Encrypt 证书

使用 certbot 获取免费证书:

bash
# 安装 certbot
sudo apt install certbot

# 获取证书(需要域名指向服务器)
sudo certbot certonly --standalone -d your-server.example.com

# 复制到 Runixo 目录
sudo cp /etc/letsencrypt/live/your-server.example.com/fullchain.pem /etc/runixo/cert.pem
sudo cp /etc/letsencrypt/live/your-server.example.com/privkey.pem /etc/runixo/key.pem
sudo chmod 600 /etc/runixo/key.pem

# 重启
sudo systemctl restart runixo-agent

自动续期

设置 cron 任务自动续期并重启 Agent:

bash
# /etc/cron.d/runixo-cert-renew
0 3 * * 1 root certbot renew --quiet && cp /etc/letsencrypt/live/your-server.example.com/fullchain.pem /etc/runixo/cert.pem && cp /etc/letsencrypt/live/your-server.example.com/privkey.pem /etc/runixo/key.pem && systemctl restart runixo-agent

客户端证书导入

当使用自签名证书时,客户端需要导入证书才能建立信任:

  1. 从服务器获取证书:scp server:/etc/runixo/cert.pem ./
  2. 在客户端 「添加服务器」 界面点击 「导入证书」
  3. 选择下载的 cert.pem 文件
  4. 连接时客户端会验证证书指纹

证书轮换

更换证书时:

bash
# 1. 备份旧证书
sudo cp /etc/runixo/cert.pem /etc/runixo/cert.pem.bak

# 2. 替换新证书
sudo cp new-cert.pem /etc/runixo/cert.pem
sudo cp new-key.pem /etc/runixo/key.pem
sudo chmod 600 /etc/runixo/key.pem

# 3. 重启 Agent
sudo systemctl restart runixo-agent

# 4. 客户端重新导入新证书

故障排查

问题原因解决方案
客户端提示证书错误自签名证书未导入导入 cert.pem 到客户端
Agent 启动失败证书文件权限不对chmod 600 key.pem
证书过期自签名证书 10 年不会过期检查自定义证书有效期
IP 变更后连接失败SAN 不包含新 IP删除旧证书重启 Agent 重新生成

MIT License