这是什么?
安全地将 Claude 连接到在您的私有网络中运行的 MCP 服务器,无需打开入站端口或将服务暴露到互联网。MCP 隧道目前处于私有测试阶段,依赖于 Cloudflare 的隧道服务。
工作原理
MCP 隧道在 Claude 和您的内部 MCP 服务器之间创建连接,传输过程中使用多层安全措施进行加密。
当 Claude 需要访问您私有网络中的 MCP 服务器时,请求通过安全隧道传输。您需要在您的一侧部署两个组件:
cloudflared(Cloudflare 的隧道代理)
MCP 网关(由 Anthropic 提供)
Cloudflared 向 Cloudflare 边缘节点发起仅出站连接。您的防火墙无需打开任何入站端口。MCP 网关终止内层 TLS,验证上游 IP 以防止 SSRF,并根据子域将每个请求路由到正确的 MCP 服务器。
连接通过三个独立层进行保护:Anthropic 和 Cloudflare 之间的外层 mTLS(带 IP 验证)、从 Anthropic 后端到您网关的端到端加密内层 TLS(设计使得 Cloudflare 无法访问 MCP 有效负载),以及每个 MCP 服务器上应用层的 OAuth 身份验证。
您部署的内容
cloudflared
Cloudflare 的隧道代理。发起仅出站连接 — 无需入站端口。
MCP 网关
Anthropic 提供的组件,用于终止内层 TLS、验证 IP 并将请求路由到您的 MCP 服务器。
关键安全属性
无需入站端口。cloudflared 仅发起出站连接 — 您的防火墙保持关闭。
端到端加密。流量从 Anthropic 后端到您网关的传输过程中进行加密。Cloudflare 无法读取 MCP 有效负载。
深度防御。多层身份验证:mTLS、内层 TLS 和应用层 OAuth。
SSRF 防护。网关验证上游 IP 以帮助防止请求伪造攻击。
本指南通过 Helm(用于 Kubernetes)和 Docker Compose 提供参考部署。您负责根据您组织的安全要求调整它们。
共同责任
保持此系统安全是 Anthropic 和您的组织之间的共同责任。
Anthropic 负责:
确保只有 Anthropic 可以访问隧道
在连接到您的网关之前验证您的 CA 证书
确保 Claude 仅向您组织拥有的隧道发送请求
您负责:
遵循本文档中的指导和任何后续指导
保护隧道令牌和 TLS 私钥
配置您的 MCP 服务器以使用 MCP 规范中描述的 OAuth 身份验证
限制对您的网关主机和 MCP 服务器的访问权限,仅限适当的人员
如果您怀疑系统已被破坏,请通知 Anthropic(请参阅响应可疑泄露)
⚠️ 凭证风险。如果攻击者获得您的隧道令牌和您的任一 TLS 私钥,他们可能会冒充您的网关并读取 MCP 请求有效负载,包括 OAuth 令牌。根据您组织的安全要求保护这些凭证 — 包括文件权限、静态加密和密钥管理。
前置条件
部署目标 — Kubernetes 集群(用于 Helm)或装有 Docker 和 Docker Compose 的虚拟机。
隧道 API 的 Anthropic API 令牌 — 从 claude.ai → 组织设置 → 连接器 → 隧道 API 生成一个。设置使用此令牌来配置隧道并注册您的 CA 证书。网关在运行时不需要它。设置完成后撤销它。
网络访问 — 根据下表的出站连接。
MCP 服务器 — 一个或多个在您的私有网络中运行且网关可以访问的 MCP 服务器。
网络要求
组件 | 目标 | 目的 |
设置(一次性) |
(端口 443) | 隧道配置 |
cloudflared | Cloudflare 边缘节点,端口 7844 TCP/UDP( | 隧道连接 |
MCP 网关 | 您的 MCP 服务器 | 上游流量 |
请参阅 Cloudflare 的隧道防火墙文档以获取权威 IP 列表。Helm 用户可以通过启用图表的 networkPolicy 值来强制执行此出口限制。
选择您的部署方法
MCP 隧道可以通过 Helm (Kubernetes) 或 Docker Compose 部署。选择适合您基础设施的方法。
⎈ Helm / Kubernetes
推荐用于大多数客户。自动化隧道配置和证书续期。将凭证存储为 Secrets。
🐳 Docker Compose
适用于单主机或虚拟机部署。
Helm / Kubernetes 部署
Helm / Kubernetes 部署
1. 获取图表值
下载默认值文件。它包含解释每个字段的注释。
Shell
helm show values \
oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
--version 0.1.0 > values.yaml
2. 配置您的路由
编辑 values.yaml 并在 gateway.config.routes 下至少添加一个路由。每个路由将子域前缀映射到上游 MCP 服务器 URL。
3. 查看呈现的清单
使用占位符令牌呈现图表以检查 Kubernetes 资源,然后再安装。图表需要 api.token 来呈现,但 helm template 不会调用 API。
Shell
helm template mcp-tunnel \
oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
--version 0.1.0 \
-n mcp-tunnel \
-f values.yaml \
--set api.token=placeholder > rendered.yaml
根据您组织的第三方清单审查实践查看 rendered.yaml。
4. 安装图表
将您的 API 令牌存储在环境变量中,然后安装。建议使用专用命名空间以实现隔离。
Shell
# Paste your API token (input is hidden)
read -rs API_TOKEN && export API_TOKEN
helm install mcp-tunnel \
oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
--version 0.1.0 \
--namespace mcp-tunnel --create-namespace \
-f values.yaml \
--set api.token="$API_TOKEN"
⚠️ 重要:安装完成后撤销 API 令牌。通过 --set 传递令牌可将其保留在值文件之外,但 Helm 仍会在发布历史记录中记录它(sh.helm.release.v1.* Secrets)。Kubernetes Secrets 默认情况下不在静止时加密,因此令牌在您撤销之前仍可从集群中恢复。
5. 检索您的隧道域
设置 Job 将隧道域写入 Secret。您需要这个来在 Claude 中配置 MCP 服务器。
Shell
kubectl get secret mcp-tunnel -n mcp-tunnel \
-o jsonpath='{.data.tunnel-domain}' | base64 -d
隧道启动并运行后,连接到 Claude。
可选:启用 NetworkPolicy
在值文件中设置 networkPolicy.enabled: true 以在网络级别限制隧道 pod 的出口。使用 pod 标签选择器或 CIDR 范围为您的上游 MCP 服务器配置 networkPolicy.mcpServers。该策略已包括 cloudflared 到达 Cloudflare 边缘的出口规则。您的集群 CNI 必须支持 NetworkPolicy——请参阅值文件以获取示例。
可选:网关配置
gateway.config.* 下的字段被传递到网关的配置文件。请参阅 附录:网关配置以获取完整列表。常见调整包括 upstream.allowed_ips、log_level 和用于 https:// 路由的 upstream.tls。要挂载配置引用的其他文件(例如用于 upstream.tls.ca_file 的 CA 包),请使用 gateway.extraVolumes 和 gateway.extraVolumeMounts。
升级
始终在 helm upgrade 上指定 --version。没有它,Helm 会从注册表中拉取最新的图表版本,这可能不是您审查的版本。
对于配置更改(路由、副本、NetworkPolicy 等),不需要 API 令牌。除非您传递 api.token,否则在升级时会跳过设置 Job:
Shell
helm upgrade mcp-tunnel \
oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
--version 0.1.0 \
-n mcp-tunnel \
-f values.yaml
对于隧道令牌轮换,在值文件中增加 tunnel.tokenVersion,生成新的 API 令牌,然后升级:
Shell
# Paste your API token (input is hidden)
read -rs API_TOKEN && export API_TOKEN
helm upgrade mcp-tunnel \
oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
--version 0.1.0 \
-n mcp-tunnel \
-f values.yaml \
--set api.token="$API_TOKEN"
升级完成后撤销 API 令牌。
维护完整的值文件,而不是依赖 --reuse-values。Helm 深度合并映射字段,因此使用 --reuse-values 删除路由会无声地失败。
使用 helm template 与 kubectl 或 kustomize
Docker Compose 部署
Docker Compose 部署
1. 准备部署目录
Shell
mkdir -p mcp-gateway/{config,tunnel-data}
cd mcp-gateway
sudo chown 65532:65532 tunnel-datachown 让容器(以 UID 65532 运行)写入绑定挂载的目录。
2. 创建 docker-compose.yaml
YAML
services:
# One-time provisioning. Run with: docker compose run --rm setup
setup:
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-gateway@sha256:62ddf0897778c80997ca789189a8a0bd63df241659d661ff9d5b0e06b5ee1dcd
entrypoint: ["/setup"]
command:
- init
- --api-url=https://api.anthropic.com
- --output=dir:/data
- --token-version=1
environment:
- API_TOKEN
volumes:
- ./tunnel-data:/data
user: "65532:65532"
read_only: true
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
profiles: ["setup"]
cloudflared:
# Verify digest at https://hub.docker.com/r/cloudflare/cloudflared/tags
image: cloudflare/cloudflared@sha256:6b599ca3e974349ead3286d178da61d291961182ec3fe9c505e1dd02c8ac31b0
command: tunnel --no-autoupdate --config /etc/cloudflared/config.yaml run
environment:
- TUNNEL_TOKEN
volumes:
- ./config/cloudflared-config.yaml:/etc/cloudflared/config.yaml:ro
restart: unless-stopped
user: "65532:65532"
read_only: true
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
stop_grace_period: 30s
logging:
options:
max-size: "10m"
max-file: "3"
mcp-gateway:
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-gateway@sha256:62ddf0897778c80997ca789189a8a0bd63df241659d661ff9d5b0e06b5ee1dcd
volumes:
- ./config/mcp-gateway.yaml:/etc/mcp-gateway/config.yaml:ro
- ./tunnel-data:/data:ro
restart: unless-stopped
user: "65532:65532"
read_only: true
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
# Should match shutdown_timeout in mcp-gateway config
stop_grace_period: 30s
logging:
options:
max-size: "10m"
max-file: "3"
安全措施:非 root 执行(UID 65532)、只读文件系统、无权限提升、所有 Linux 功能已删除、按 SHA256 摘要固定镜像。
3. 配置隧道
Shell
# Paste your API token (input is hidden)
read -rs API_TOKEN && export API_TOKEN
docker compose run --rm setup
设置命令通过隧道 API 创建隧道,生成 CA 和服务器证书,向 Anthropic 注册 CA,并将所有输出写入 ./tunnel-data/。
检索您的隧道域名以进行下一步:
Shell
sudo cat tunnel-data/tunnel-domain
⚠️ 重要:继续之前请撤销 API 令牌。
4. 配置网关
创建 config/mcp-gateway.yaml:
YAML
listen_addr: ":8080"
log_level: info
shutdown_timeout: 30s
# Your tunnel domain from Step 3
tunnel_domain: abcd1234.tunnel.anthropic.com
tls:
cert_file: /data/tls.crt
key_file: /data/tls.key
routes:
# Replace with your actual MCP servers.
# With tunnel_domain set, keys are subdomain prefixes.
docs: http://docs-mcp.internal:8080
search: http://search-mcp.internal:8080
upstream:
allowed_ips:
- 10.0.0.0/8
有关所有可用字段,请参阅 附录:网关配置。
创建 config/cloudflared-config.yaml:
YAML
ingress:
- service: http://mcp-gateway:8080
5. 部署
Shell
export TUNNEL_TOKEN=$(sudo cat tunnel-data/tunnel-token)
docker compose up -d
docker compose logs -f
目录结构:
mcp-gateway/
├── docker-compose.yaml
├── config/
│ ├── cloudflared-config.yaml
│ └── mcp-gateway.yaml
└── tunnel-data/
├── tunnel-id
├── tunnel-domain
├── tunnel-token
├── token-version
├── ca.crt
├── ca.key
├── tls.crt
└── tls.key
考虑将 CA 私钥和隧道令牌移至安全存储。
对于多虚拟机部署:将 mcp-gateway/ 目录复制到每个主机。相同的隧道令牌和证书可在所有副本中使用。
隧道启动并运行后,连接到 Claude。
证书续期(Compose)
服务器证书的有效期为 90 天。在过期前续期:
Shell
docker compose run --rm setup renew-cert --output=dir:/data
网关每 30 秒轮询一次证书文件,当文件更改时自动重新加载。有关使此命令可安全地按计划运行的标志,请参阅 附录:设置 CLI 参考。
隧道令牌轮换(Compose)
编辑 docker-compose.yaml 以增加 --token-version,然后使用新的 API 令牌重新运行设置:
# Paste your API token (input is hidden)
read -rs API_TOKEN && export API_TOKEN
docker compose run --rm setup
export TUNNEL_TOKEN=$(sudo cat tunnel-data/tunnel-token)
docker compose up -d cloudflared
轮换完成后撤销 API 令牌。
连接到 Claude
隧道运行后,在 Claude 中注册您的 MCP 服务器,以便用户可以使用它们。
1. 添加 MCP 服务器
组织管理员在 claude.ai 中导航到 Organization Settings → Connectors → Add → Custom → Web。
使用隧道主机名输入每个 MCP 服务器。例如,docs.abcd1234.tunnel.anthropic.com。子域前缀与网关配置中的路由密钥匹配。
2. 用户连接
个人用户导航到 Settings → Connectors 并为他们想要使用的每个 MCP 服务器点击 Connect。
稍后添加更多服务器?向配置添加新路由,应用更改(helm upgrade 或 docker compose restart mcp-gateway),并在 Claude 中注册新主机名。无需更改证书或 cloudflared。通配符证书涵盖所有子域。
安全最佳实践
在您的 MCP 服务器上要求 OAuth。隧道和 TLS 层保护传输,但如果这些层遭到破坏,应用层的 OAuth 仍可防止未授权的工具调用。按照 MCP 规范中的说明配置每个 MCP 服务器以要求 OAuth 身份验证。
为您的 claude.ai 组织启用 SSO。隧道令牌从 claude.ai 控制台生成。启用 SSO 后,您的身份提供商的会话控制将管理管理员会话。
限制
allowed_ips。使用覆盖您的 MCP 服务器的最小 CIDR 范围。监控日志。对警告、错误和异常模式设置警报。
轮换凭证。定期轮换证书,或在怀疑泄露时立即轮换。
保持镜像更新。及时应用网关更新。按 SHA256 摘要固定镜像。
限制网络访问。网关和 cloudflared 应仅具有所需的网络访问权限。
限制 MCP 服务器范围。MCP 服务器应仅公开必要的功能。
保护静态凭证。对
tunnel-data/目录(Compose)或凭证 Secret(Helm)应用适当的文件权限、静态加密和密钥管理。
应对疑似泄露
如果您怀疑您的隧道凭证、TLS 密钥或系统的其他方面已被泄露:
立即停止部署(
helm uninstall或docker compose down --timeout 0)从 Claude 中删除 MCP 服务器(Organization Settings → Connectors)
通过 API 存档隧道(请参阅拆卸,第 3 步)
联系 Anthropic 以便他们进行调查
轮换凭证 — 重新配置新隧道,轮换 MCP 服务器上的 OAuth 令牌
恢复服务前查看日志
故障排除
IP 验证失败
IP 验证失败
网关日志中的"IP 验证失败"表示上游解析到的 IP 不在 allowed_ips 范围内。检查已解析的 IP:
Shell
dig +short docs-mcp.internal
如果该 IP 是合法的,请更新网关配置中的 allowed_ips,以包含正确的 CIDR 范围。
隧道未连接
隧道未连接
检查 cloudflared 日志中的错误。常见原因:
隧道令牌无效
防火墙阻止了到 Cloudflare 边缘的出站端口 7844 TCP/UDP
验证到 Cloudflare IP 范围的出站连接:198.41.192.0/19 和 2606:4700:a0::/44。
UDP 缓冲区大小警告
UDP 缓冲区大小警告
cloudflared 可能会记录 failed to sufficiently increase receive buffer size。这是一个 QUIC 传输调优问题 — 请参阅 quic-go UDP 缓冲区文档进行调整。
证书错误
证书错误
如果 TLS 握手失败,请检查:
服务器证书未过期(90 天有效期)
证书的 SAN 与
*.<tunnel-domain>匹配CA 证书已通过 API 向 Anthropic 注册
对于 Compose,证书文件可由 UID 65532 读取
通过隧道路由 OAuth(IP 允许列表后的身份验证服务器)
通过隧道路由 OAuth(IP 允许列表后的身份验证服务器)
问题:您的身份验证服务器位于源 IP 允许列表后。Claude 的后端需要访问它以进行 OAuth 发现、客户端注册和令牌交换,但您不希望将 Anthropic 的出站 IP 范围列入白名单。
解决方案:分割端点配置。通过隧道路由后端到后端的 OAuth 调用。在现有的允许列表主机名上保留面向浏览器的 /authorize 端点。这之所以有效,是因为 Claude 从您的发现元数据中读取 authorization_endpoint,并将用户的浏览器重定向到那里。它本身不需要访问该 URL。
步骤 1:为您的身份验证服务器添加网关路由
YAML — mcp-gateway.yaml
routes:
mcp: http://your-mcp-server:8080
auth: http://your-auth-server:8080
步骤 2:提供分割端点发现元数据
您的身份验证服务器的 /.well-known/oauth-authorization-server 必须返回:
JSON
{
"issuer": "https://auth.<tunnel-id>.tunnel.anthropic.com",
"authorization_endpoint": "https://<your-allowlisted-host>/authorize",
"token_endpoint": "https://auth.<tunnel-id>.tunnel.anthropic.com/token",
"registration_endpoint": "https://auth.<tunnel-id>.tunnel.anthropic.com/register",
"code_challenge_methods_supported": ["S256"]
}只有 authorization_endpoint 指向您现有的主机名。其他所有内容都使用隧道 URL。
步骤 3:将您的 MCP 服务器指向隧道颁发者
您的 MCP 服务器的 /.well-known/oauth-protected-resource:
JSON
{
"resource": "https://mcp.<tunnel-id>.tunnel.anthropic.com",
"authorization_servers": [
"https://auth.<tunnel-id>.tunnel.anthropic.com"
]
}
拆除
如何在不再需要隧道时将其停用。
1. 获取隧道 ID
Helm
TUNNEL_ID=$(kubectl get secret mcp-tunnel -n mcp-tunnel \
-o jsonpath='{.data.tunnel-id}' | base64 -d)
Compose
TUNNEL_ID=$(sudo cat tunnel-data/tunnel-id)
2. 停止部署
Helm:helm uninstall mcp-tunnel -n mcp-tunnel(注意:凭证 Secret 由设置 Job 创建,而不是 Helm,因此在卸载后仍然存在)
Compose:docker compose down
3. 归档隧道
首先生成一个新的 API 令牌,完成后撤销它。
Shell
read -rs API_TOKEN && export API_TOKEN
curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/archive" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"
4. 删除存储的凭证
Helm:kubectl delete secret mcp-tunnel -n mcp-tunnel
Compose:sudo rm -rf tunnel-data
获取帮助
请联系您的 Anthropic 账户团队寻求帮助。
附录:网关配置
网关从 YAML 文件读取其配置。在 Docker Compose 中,您可以直接将此文件写入 config/mcp-gateway.yaml。在 Helm 中,在您的 values 文件中的 gateway.config.* 下设置这些字段 — 图表为您管理 listen_addr、tls 和 tunnel_domain。
字段 | 描述 | 默认值 |
| 要监听的地址和端口 | 必需 |
| 日志详细程度: |
|
| 优雅关闭期间等待进行中请求的时间 |
|
| 用于前缀路由解析的基础域名 | 无 |
| TLS 证书的路径 | 必需 |
| TLS 私钥的路径 | 必需 |
| 主机名(或前缀)到上游 URL 的映射 | 必需 |
| 网关可以连接的 CIDR 范围 | RFC 1918 私有范围 |
| 完全禁用 IP 验证 |
|
| 用于验证上游 TLS 的 CA 包 | 无 |
| 信任用于上游 TLS 的系统 CA 包 |
|
对于 https:// 路由,至少设置 upstream.tls.ca_file 或 upstream.tls.include_system_cas 之一。
附录:隧道 API
对于自定义配置工作流,您可以直接调用隧道 API。所有请求都需要这些标头:
Shell
-H "Authorization: Bearer $API_TOKEN"
-H "anthropic-version: 2023-06-01"
-H "anthropic-beta: mcp-tunnels-2026-02-24"
创建隧道:
curl -X POST https://api.anthropic.com/v1/tunnels \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24" \
-H "Content-Type: application/json" \
-d '{}'
列出隧道:
curl https://api.anthropic.com/v1/tunnels \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"
注册 CA 证书:
curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/certificates" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24" \
-H "Content-Type: application/json" \
-d "{\"ca_certificate_pem\": $(jq -Rs . < ca.crt)}"请参阅 附录:证书要求 了解 CA 和服务器证书必须包含的内容。
列出 CA 证书:
curl "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/certificates" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"
撤销 CA 证书:
curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/certificates/${CERT_ID}/revoke" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"
显示隧道令牌:
curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/reveal_token" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"
轮换隧道令牌:
curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/rotate_token" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"
存档隧道:
curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/archive" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"
附录:证书要求
如果您使用设置二进制文件(setup init / setup renew-cert),它会自动生成符合要求的证书,您可以跳过本部分。如果您通过自己的 PKI 颁发证书,这些要求适用。
CA 证书 — 通过 POST /v1/tunnels/{id}/certificates 上传。一个隧道最多同时持有两个活跃的 CA 证书,允许无停机轮换。
PEM 编码,单个证书,最多 8 KB
BasicConstraints扩展,包含CA:TRUE,标记为关键SubjectKeyIdentifier扩展存在KeyUsage包含keyCertSign在有效期内
RSA 2048 位或更大,或 ECDSA P-256 或更大;SHA-256 或更强的签名
服务器证书 — 由网关在内部 TLS 握手期间呈现。不上传到 Anthropic。
由隧道上注册的 CA 直接签署
AuthorityKeyIdentifier扩展存在,与 CA 的SubjectKeyIdentifier匹配SAN 包含与
<route>.<tunnel-domain>匹配的 DNS 名称(通配符*.<tunnel-domain>覆盖所有路由)如果存在
ExtendedKeyUsage扩展,它包含serverAuth在有效期内
RSA 2048 位或更大,或 ECDSA P-256 或更大;SHA-256 或更强的签名
参考:设置二进制文件生成 ECDSA P-256 CA(5 年有效期)和 RSA 4096 位服务器证书,带有通配符 SAN(90 天有效期)。
附录:设置 CLI 参考
setup 二进制文件通过 docker compose run --rm setup <subcommand>(Compose)或作为 Helm hook 和 CronJob(Kubernetes)在网关容器内运行。
setup init — 通过隧道 API 创建隧道,生成 CA 和服务器证书,注册 CA,并写入所有输出。
标志 | 描述 | 默认值 |
| Anthropic API 基础 URL。也可从 | 必需 |
| 具有隧道范围的 API 令牌。也可从 | 必需 |
| 输出目标: |
|
| 服务器证书有效期 |
|
| 变更检测字符串;新值触发隧道令牌轮换 | 无 |
setup renew-cert — 发行由存储的 CA 签署的新服务器证书。不需要 API 调用。
标志 | 描述 | 默认值 |
| 输出目标: |
|
| 新证书有效期 |
|
| 如果现有证书的过期时间超过此值,则跳过 |
|
设置 --renew-before=720h 使命令在剩余超过 30 天时成为无操作,适合按计划运行。