常见问题
以下是关于 SSLcat 的常见问题解答,如果您有其他问题,请随时联系我们。
general
SSLcat 是一个使用 Go 编写的开源企业级 SSL 反向代理服务器。它把 nginx + Caddy + Web UI + GitOps 集成在同一个二进制里:Let's Encrypt 自动签发与续期、智能域名转发、负载均衡、WAF、Docker/Runner 应用托管、现代化 Web 管理面板,并且从 2.1 版本起内置 MCP 服务端,可被 Claude / Cursor 等 AI 客户端直接调用。
MCP(Model Context Protocol)是连接 AI 客户端和外部工具的开放协议。SSLcat 2.1 起本身就是 MCP 服务端,到 v2.3.0-rc1 已对外提供 22 个工具(站点 CRUD、证书 CRUD、转发路由 CRUD、上游健康检查、长任务查询、`error_log_list` / `error_log_tail` 错误日志读取等)+ 5 个 Resource(脱敏配置、运行指标、访问日志、错误日志来源、错误日志内容)。把 Token 配到 Claude Desktop / Cursor / Cherry Studio / Continue.dev 之后,AI 就能直接帮你查站点、申请证书、改转发路由、排查访问与错误日志,破坏性操作还会走二次确认。
一行命令即可(macOS / Linux):`curl -fsSL https://raw.githubusercontent.com/xurenlu/sslcat/main/install.sh | bash`。也可以从 GitHub Releases 页面下载二进制(提供 linux-amd64 / linux-arm64 / darwin-arm64 / darwin-amd64)。完整文档请见 docs 目录或官网文档。
会。SSLcat 集成 Let's Encrypt(ACME),添加域名后自动签发证书,到期前 30 天自动续期,整个过程零停机。支持 HTTP-01 与 DNS-01 两种挑战方式,DNS-01 还支持 AWS Route53 等多家 DNS 厂商,因此可以签发通配符证书 `*.example.com`。
对 nginx:SSLcat 内置 Web 管理面板、自动 SSL、GitOps 部署、实时监控和 AI 安全,省去手写配置文件的负担。对 Caddy:SSLcat 提供 6 种负载均衡算法、多用户管理、Docker 镜像与 Runner 部署、API Token 系统、WebSocket 实时日志流,以及 2.1 起的内置 MCP 接入。
完整支持 HTTP/1.1、HTTP/2、HTTP/3 (QUIC),强制 TLS 1.3。WebSocket 与 SSE 长连接的生命周期经过专门优化,证书申请等长任务通过心跳、写超时豁免与同域并发隔离避免互相拖慢。
内置 6 种负载均衡算法(轮询、加权轮询、最少连接、IP Hash、随机、最快响应),配合 TCP 健康检查与会话保持,可对一个域名挂多个后端,单条转发路由级别就能配置后端列表与权重。
把 SSLcat 加为远程仓库,然后 `git push sslcat main` 即可触发部署,类似 Dokku/Heroku 的使用体验。Runner 部署入口分层设计:上传目录、上传二进制、直接拉 Docker 镜像、Git push 构建镜像、模板部署,最终归一到同一套 Runner 运行规格(环境变量、端口、挂载、启动命令)。
Runner 是 SSLcat 内置的应用托管层,可以直接跑 Docker 容器、跑上传的二进制、跑 Git push 构建出来的镜像,或者按模板部署。SSLcat 服务自身重启时只对账 Runner 容器状态,不会跟随重启业务容器,避免误伤生产流量。
WAF 规则匹配(请求体扫描限制在 1MB 以内以控制内存)、DDoS 防护、防爆破、IP/UA/TLS 指纹封禁与白名单、API Token 细粒度权限、TOTP 二次验证、审计日志、配置版本管理,以及基于 Isolation Forest 的 AI 异常检测(在线训练 + 持久化模型 + 真实流量推理)。
优先使用内置重置命令:`sslcat users password -username admin -new-password 'NewStrongPass123!'`。如果在源码目录,也可以执行:`go run tools/cmd/reset_password/main.go admin 'NewStrongPass123!'`。
2.0.0-rc22 起还支持「一次性恢复码」方式重置密码。如果需要手动生成 bcrypt 哈希,可以用 Ruby:`gem install bcrypt`,然后执行 `SSL_PASS='NewStrongPass123!' ruby -rbcrypt -e 'puts BCrypt::Password.create(ENV.fetch("SSL_PASS"), cost: 10)'`。
也可以用 Python:`python3 -m pip install bcrypt`,然后执行 `SSL_PASS='NewStrongPass123!' python3 -c 'import bcrypt, os; print(bcrypt.hashpw(os.environ["SSL_PASS"].encode(), bcrypt.gensalt(rounds=10)).decode())'`。
把生成的哈希写入配置中的 `admin.password_file`(常见路径 `/opt/sslcat/data/admin.pass` 或 `./data/admin.pass`),并保证权限为 `600`。密码文件方式通常无需重启,下一次登录会读取新哈希。
默认地址是 `http://<your-host>:8080/sslcat-panel/`,默认账号 `admin`,默认密码 `admin*9527`(强烈建议首次登录后立刻修改)。面板路径前缀(AdminPrefix)和管理端口都可以在配置中自定义。
支持。SSLcat 通过 Let's Encrypt 的 DNS-01 挑战签发通配符证书(如 `*.example.com`),通配域名会自动强制走 DNS-01,配合 AWS Route53 等 DNS 厂商完成 DNS 验证。
在管理面板「站点」中添加域名、目标地址与端口即可。需要多个后端时,开启 `load_balancer_enabled`、选择算法(round_robin / least_conn / ip_hash 等)、勾选健康检查,再添加后端列表。也可以直接编辑 JSON 配置(SSLcat 使用 JSON 而非 YAML)。
适合。2.0 主线持续在做生产硬化:原子落盘(证书、私钥、配置版本、token、session)、Stop/Close 幂等保护、上游缓存并发安全、WAF 高并发性能、HTTP/2/HTTP/3 与 WebSocket 长连接稳定性,最近一轮优化把空闲态 CPU 从 50-100% 降到 < 1%,多 Runner 场景 CPU 降幅约 97%。
1)开启 MCP:`sslcat mcp enable`;2)创建 Token:`sslcat mcp token create --name claude-desktop --scopes read,site:write,cert:write`,明文 token 只显示这一次,妥善保存;3)在 Claude Desktop 的 MCP 配置中填入 SSLcat 的 Streamable HTTP 端点(默认 `https://your-domain/sslcat-panel/mcp/stream`)和 Bearer Token。完整示例见 `docs/mcp-client-setup.md`,同时给出 Cursor / Cherry Studio / Continue.dev / curl 的配置。
安全。所有 destructive 工具走两阶段确认:第一次调用返回 dry-run 预演(含影响范围,比如 cert_delete 会提示是否被反代引用、剩余有效天数;proxy_route_delete 会列出 prefixes 与 backends)+ 一个 60 秒 TTL 的 `confirm_token`;AI 必须把这个 token 放进第二次调用的 `confirm` 字段才会真正执行。token 与 (token_name, tool, args 哈希) 强绑定,无法跨工具或跨参数复用。
SSLcat 内置 Isolation Forest 异常检测:`RequestSampler` 对每个真实请求做特征提取并写入 5000 容量的环形缓冲;训练时直接从样本环抓取数据,模型 JSON 持久化到 `${data_dir}/ml/isolation_forest.json`,下次启动自动加载;推理结果实时写入 200 条预测环形缓冲,管理面板的「最近检测」展示的是真实数据,不是硬编码假数据。
支持 Linux(所有主流发行版)、macOS、Windows,提供 amd64 与 arm64 架构的二进制。生产推荐使用 Linux + systemd 托管 SSLcat 进程。
最低:512 MB 内存 + 100 MB 磁盘;推荐:2 GB 内存 + 1 GB 磁盘;从源码构建需要 Go 1.21+。
都支持。WebSocket 透明转发到上游,SSE 在 HTTP/2 / HTTP/3 场景下经过专门优化避免被写超时打断;PHP 站点通过 FastCGI 后端配置即可。
管理面板可以在线尾部读取(有界读取,不会把大日志拉满内存),也可以直接看配置的日志文件。如果用 MCP,AI 可以通过 `sslcat://logs/access?since=10m&domain=foo.com&limit=200` 这类 Resource 拉取尾部日志做排查。
SSLcat 默认对接 Let's Encrypt,它是一个免费的公共证书颁发机构,目标就是推广 HTTPS 普及。当然你也可以通过 `cert_upload` 上传商业证书,SSLcat 会校验 PEM 解析、cert/key 配对与 CN/SAN 覆盖。
1)`sslcat doctor --json` 一键体检:配置 / 端口 / 证书目录 / 站点根目录 / 上游 / MCP token 状态都会汇总输出;2)`sslcat status --json` 看版本、监听参数、站点 / 证书 / MCP 摘要;3)看 SSLcat 错误日志和 `${data_dir}/mcp_audit.YYYYMMDD.log`,或通过 MCP 的 `error_log_list` / `error_log_tail` 让 AI 直接读 sslcat 与各 proxy / static / php 站点的近期错误;4)`sslcat proxy health-check --domain foo.com --include-routes --json` 对主后端与 PathPrefixRule 后端并发探测;5)服务端 API 通过 `X-App-Version` / `X-Server-Version` 响应头暴露版本号,便于核对部署的镜像。
v2.2.0-rc1 新增 CLI 运维命令:`sslcat status [--json]`(运行摘要)、`sslcat doctor [--json]`(配置 / 端口 / 证书目录 / 站点根目录 / 上游 / MCP token 自检)、`sslcat site list/add/update/delete/enable/disable`(静态与 PHP 站点 CRUD,删除必须显式 `--yes`)、`sslcat proxy health-check [--domain] [--include-routes] [--json]`(TCP 拨号探测);全局 `-config` 可放在命令前。v2.3.0-rc1 新增 MCP 工具 `error_log_list` 与 `error_log_tail`,以及 Resource `sslcat://logs/error-sources` 与 `sslcat://logs/error{?id,kind,domain,since,keyword,limit,max_bytes}`,AI 客户端可直接列出与读取 sslcat 内部和站点错误日志;底层新增 `internal/mcp/logview` 有界读取层,默认只读尾部 1MB、最大 4MB,避免大日志拖慢请求路径。
已发布:MCP 内置接入 P1~P5 完整能力(v2.1.0)、CLI 运维与自检命令(v2.2.0-rc1)、MCP 错误日志读取与有界日志读取层(v2.3.0-rc1)。规划中:Kubernetes 集成、多集群支持、高级缓存策略、插件系统、GraphQL API。
MIT 协议。代码、Issues 与 Release 都在 GitHub:https://github.com/xurenlu/sslcat 。欢迎提 Issue、PR,或在 `docs/` 下补充使用案例。
没有找到您要的答案?
如果您有其他问题或需要技术支持,请通过以下方式联系我们:
📧 邮箱: [email protected]
💬 GitHub Issues:github.com/xurenlu/sslcat/issues