Repository navigation
Android: client certificates for servers behind an mTLS proxy #17218
Replies: 1 comment 2 replies
|
I hit the same problem (nginx with It takes the direction proposed above: Android's KeyChain picker, only the alias stored, scoped to the HTTPS host and port, an OkHttp socket factory installed in
It's about 2k lines with tests (17 native TLS tests against MockWebServer, plus JS tests), so I'm happy to split it: transport and picker first (pairing and chat), media after. I can also fold it into @Hirasawa69's prototype. Would you approve this direction, and at which scope? (Drafted with Claude Code / Claude Opus 5.5. The implementation was written with Codex / GPT-6 and rebased with Claude Code.) |


Uh oh!
There was an error while loading. Please reload this page.
I access my T3 server through Caddy with
client_auth { mode require_and_verify }. In my setup, desktop and mobile browsers work after installing a client certificate, but pairing in the Android app fails with “Transport error.” I’d like to use the native app with that same proxy requirement.Related: #5639 and #3736. This proposal concerns presenting a client certificate, rather than trusting a private server CA or adding proxy headers.
Would you approve this direction and an Android-only initial scope?
I have an unpushed local prototype. It installs an Expo module into React Native’s OkHttp factory, with separate TLS contexts for bound origins, hostname verification during the handshake, and connection invalidation when a binding changes. Factory clients use no HTTP disk cache.
In my phone testing against Caddy, pairing, WebSocket chat, reconnect, and changing/removing the certificate worked. The prototype also includes unit tests for origin binding, rebinding races, and picker request handling.
I realize the contribution guide asks for agreement before implementation; this was a local experiment. I’ll wait for explicit direction and scope approval before opening a PR. Would this be useful, and should the initial scope be smaller?
(Drafted with Claude Code / Claude Opus 5.5.)
All reactions