You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
TLS options: --cacert, client certificates (mTLS) and JetBrains SSLConfiguration #39
The only TLS control is --insecure. Internal APIs behind a private CA and mTLS gateways (common in the AWS and Kubernetes worlds apic targets with SigV4) cannot be reached without turning verification off. JetBrains projects already describe client certs in http-client.private.env.json under SSLConfiguration; apic should read that so a JetBrains project works unchanged.
What
Acceptance criteria:
Flags: --cacert <pem> (adds to the system roots), --cert <pem> and --key <pem> (client certificate; PKCS#12 via --cert file.p12 --cert-password is optional).
JetBrains compatibility: read "SSLConfiguration": {"clientCertificate": {"path": ..., "keyPath": ...}, "hasCertificatePassphrase": ..., "verifyHostCertificate": ...} from the env files for the selected environment.
Paths resolve relative to the project root and are confined to it. Key files are refused if world-readable, with a message naming the mode (same posture as the private env file).
describe shows tls: client cert certs/client.pem when one applies; apic curl maps to --cacert, --cert, --key.
--insecure still means what it means and is reported in output.
docs/cli.md (flags, config), docs/auth.md (new "TLS and client certificates" section), docs/cheatsheet.md, docs/comparison.md (client certs row), docs/faq.md.
Tests
httptest.NewUnstartedServer with TLS.ClientAuth = RequireAndVerifyClientCert and a generated CA: success with cert, failure without, custom CA trusted, JetBrains block parsed, world-readable key refused.
Shipped in #103: --cacert, --cert, --key; tls: in apic.yaml with caFile, certFile, keyFile, verifyHost and per-host overrides under hosts (names or *.suffix); the JetBrains SSLConfiguration block read from either env file (a passphrase key is refused); project paths confined to the root, world-readable keys refused with their mode; tls in describe, run -v and --json; apic curl mapping to --cacert/--cert/--key/--insecure. Not read: PKCS#12 bundles (documented with the openssl conversion). Docs: auth (TLS and client certificates).
Activity
runner: TLS options: --cacert, client certificates and JetBrains SSLC…
dataGriff commentedon Sep 20, 2026
Shipped in #103:
--cacert,--cert,--key;tls:inapic.yamlwithcaFile,certFile,keyFile,verifyHostand per-host overrides underhosts(names or*.suffix); the JetBrainsSSLConfigurationblock read from either env file (a passphrase key is refused); project paths confined to the root, world-readable keys refused with their mode;tlsindescribe,run -vand--json;apic curlmapping to--cacert/--cert/--key/--insecure. Not read: PKCS#12 bundles (documented with theopensslconversion). Docs: auth (TLS and client certificates).Generated by Claude Code