helm (Go) fails TLS through Cortex proxy on macOS — CA not in System keychain
Maintainer thường phản hồi trong vòng 1 ngày
Một pull request liên quan đã được merge.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 18/100
Hướng nghiên cứu
The payload names no source files, only install.sh and the agentop CLI, plus the ~/.cortex/ca/bundle.crt path the env vars point at. Start by reading how install.sh and agentop set HTTPS_PROXY and the CA variables, and reproduce with helm repo update behind the proxy. Done means a maintainer has chosen between the keychain change, a proxy bypass, or another supported CA path, and the chosen approach is implemented.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
Go-based CLI tools (here: helm) fail TLS verification when their traffic is routed through the Cortex proxy on macOS, because they do not consult the *_CA_BUNDLE / SSL_CERT_FILE environment variables Cortex sets, and the Cortex bridge CA is not in the macOS System keychain that Go verifies against.
Filed as a blank issue per the Laptop-feedback template's guidance ("a Helm or platform problem — open a blank issue instead"). Raised with a Cortex maintainer, who suggested filing with details.
Where it fails
On the local machine, not the cluster. A Python CLI shells out to the local helm binary, which fetches public Helm chart repos (e.g. https://llm-d-incubation.github.io/llm-d-infra/) over the internet via the local Cortex proxy. The cluster API path (kubectl/oc) is unaffected.
Symptom
helm repo update llmDInfra
Get "https://llm-d-incubation.github.io/llm-d-infra/index.yaml":
tls: failed to verify certificate: x509: certificate signed by unknown authority
Reproduces both inside the CLI and when helm repo update is run standalone in the same shell.
Works vs. doesn't
curl -sSI https://llm-d-incubation.github.io/llm-d-infra/index.yaml→ HTTP/2 200 (curl honorsCURL_CA_BUNDLE).helm repo update→ TLS failure.
Root cause (hypothesis)
Cortex sets HTTPS_PROXY=http://127.0.0.1:47600 plus CURL_CA_BUNDLE / REQUESTS_CA_BUNDLE / SSL_CERT_FILE → ~/.cortex/ca/bundle.crt (valid, 129 certs). curl- and Python-based tools trust the bridge CA via those vars. Go-based tools (helm, and likely oc/kubectl plugins, gh in some builds) do not read *_CA_BUNDLE, and on macOS Go verifies against the System keychain rather than SSL_CERT_FILE — where the Cortex CA is absent. So any Go tool doing outbound TLS through the proxy fails.
Options considered (none applied)
- Add the Cortex CA to the macOS System keychain (
security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.cortex/ca/bundle.crt) — fixes all Go tools, but is a sudo, machine-wide trust change. - Bypass the proxy for the helm step (
env -u HTTPS_PROXY ...) — loses Cortex token visibility for those calls.
Questions
- Is adding the bridge CA to the macOS System keychain the intended/supported fix for Go tools, and if so should
install.sh/agentopdo it (or offer it)? - Is there a supported way for Go/helm to pick up the CA without a system-wide keychain change?
- Is per-tool proxy bypass acceptable to Cortex's accounting model?
Environment
- OS:
Darwin arm64 - Cortex:
agentop v0.8.0 agentop service status: healthy; TLS bridge CA~/.cortex/ca/ca.crt(minted 2026-09-14), env vars point at~/.cortex/ca/bundle.crt- helm:
v4.2.3+g43e8b7f(Gogo1.25.1 darwin/arm64) - Agent: Claude Code, claude-opus-4-8
- Ngôn ngữ chính
- Go
- Star
- 18
- Fork
- 42
- Merge trung bình
- 12 giờ 20 phút
- Pull request đã merge (30 ngày)
- 229
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của rossoctl/cortex
-
UI shows costs for all sessions even when drilled into a sessionCó thể đã có người làm @esnible đã nhận 11 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
rossoctl/cortex#1116 · 2 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement laptop
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 40/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Decouple plugins from Go pipeline internals: parser test data, session facts, serializable recordsĐang mởenhancement laptop
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement laptop
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 38/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Feed recording, sessions and cost through one input that does not depend on the Go listenersĐang mởenhancement laptop
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của rossoctl/cortex
Issue tương tự
-
fix(handlers): explicitly set Content-Type header in static Index handlerCó thể đã có người làm @kage-zero đã nhận hôm nay. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Quick Open: restore dependency-directory exclusions in filesystem fallbackCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
eugenioenko/ttt#1206 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
open-policy-agent/opa#9426 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
rorkai/App-Store-Connect-CLI#3192 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
t:urlDecodeUni does not map U+3002 and U+FF61 to a dot, unlike ModSecurityCó thể đã có người làm @fzipi đã nhận hôm nay. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày