這是什麼?
安全地將 Claude 連接到在您的私有網路中執行的 MCP 伺服器,無需開放入站連接埠或將服務暴露到網際網路。MCP 隧道目前處於私人測試版,並依賴 Cloudflare 的隧道服務。
運作方式
MCP 隧道在 Claude 和您的內部 MCP 伺服器之間建立連接,在傳輸過程中使用多層安全性進行加密。
當 Claude 需要存取您私有網路中的 MCP 伺服器時,請求會通過安全隧道傳輸。您需要在您的一側部署兩個元件:
cloudflared(Cloudflare 的隧道代理)
MCP Gateway(由 Anthropic 提供)
Cloudflared 向 Cloudflare 邊緣發起僅出站連接。您的防火牆中無需開放入站連接埠。MCP Gateway 終止內層 TLS,驗證上游 IP 以防止 SSRF,並根據子網域將每個請求路由到正確的 MCP 伺服器。
連接由三個獨立層保護:Anthropic 和 Cloudflare 之間的外層 mTLS(具有 IP 驗證)、從 Anthropic 後端到您的閘道的端對端加密內層 TLS(設計使 Cloudflare 無法存取 MCP 負載),以及每個 MCP 伺服器上應用層的 OAuth 驗證。
您部署的內容
cloudflared
Cloudflare 的隧道代理。發起僅出站連接 — 無需入站連接埠。
MCP Gateway
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. 擷取您的隧道網域
設定工作會將隧道網域寫入 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 和 upstream.tls (用於 https:// 路由)。若要掛載設定參考的其他檔案 (例如 upstream.tls.ca_file 的 CA 套件),請使用 gateway.extraVolumes 和 gateway.extraVolumeMounts。
升級
在 helm upgrade 上始終指定 --version。沒有它,Helm 會從登錄中提取最新的圖表版本,這可能不是您檢查的版本。
對於設定變更 (路由、副本、NetworkPolicy 等),不需要 API 權杖。除非您傳遞 api.token,否則升級時會跳過設定工作:
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 私密金鑰和隧道權杖移至安全儲存空間。
針對多 VM 部署:將 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 驗證失敗"表示上游解析為 allowed_ips 之外的 IP。檢查已解析的 IP:
Shell
dig +short docs-mcp.internal
如果 IP 是合法的,請更新閘道配置中的 allowed_ips 以包含正確的 CIDR 範圍。
隧道未連接
隧道未連接
檢查 cloudflared 日誌中的錯誤。常見原因:
無效的隧道令牌
防火牆阻止出站連接埠 7844 TCP/UDP 到 Cloudflare 邊緣
驗證到 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 由設定工作建立,而非 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 中,在您的值檔案中的 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 掛鉤和 CronJob(Kubernetes)在閘道容器內執行。
setup init — 透過隧道 API 建立隧道,產生 CA 和伺服器憑證,註冊 CA,並寫入所有輸出。
旗標 | 說明 | 預設值 |
| Anthropic API 基礎 URL。也可從 | 必需 |
| 具有隧道範圍的 API 權杖。也可從 | 必需 |
| 輸出目的地: |
|
| 伺服器憑證有效期 |
|
| 變更偵測字串;新值會觸發隧道權杖輪換 | 無 |
setup renew-cert — 發行由儲存的 CA 簽署的新伺服器憑證。不需要 API 呼叫。
旗標 | 說明 | 預設值 |
| 輸出目的地: |
|
| 新憑證有效期 |
|
| 如果現有憑證的到期時間超過此時間,則跳過 |
|
設定 --renew-before=720h 會在剩餘超過 30 天時使命令成為無操作,適合按排程執行。