mTLS support for iOS app when connecting to self-hosted Bitwarden environments that require client certificates. #15491
Replies: 15 comments 18 replies
|
✨ Thank you for your code contribution proposal! While the Bitwarden team reviews your submission, we encourage you to check out our contribution guidelines. Please ensure that your code contribution includes a detailed description of what you would like to contribute, along with any relevant screenshots and links to existing feature requests. This information helps us gather feedback from the community and Bitwarden team members before you start writing code. To keep discussions focused, posts that do not include a proposal for a code contribution will be removed.
Thank you for contributing to Bitwarden! |
|
still not merged? It's working great for android. |
|
Please merge soon! Works perfectly fine on android. I'm missing the feature on iOS. |
|
The PR should be merged soon I am hoping. The last review comment I received was "Thanks @jalenfran! I need to do some additional testing next week, but this is looking to be in a good spot." |
|
That sounds wonderful! I am looking forward to try it out as soon as it is released! |
|
+1 |
|
Hi everyone! The PR has been merged into main. The feature should be bundled in the next release. |
|
Is there a timeline when this release will make it to the App Store? |
|
Looking at their past releases, it looks like they have a release every month, so the next one (2026.4.0) should be in a few weeks. |
|
As usual, they don't seem interested in finally adding this long-overdue feature to the latest release. |
|
Just installed 2026.4.0 (3082) in IOS 26.4.1 and the single server approach (Server URL in Self-hosted Environment) does not work with mTLS. But what still works is a separation of the endpoints in the custom environment section. I have the following setup running.
I had to configure two different host names with traefik because traefik does not support different TLS settings on the same hostname. So at least the Web vault server has mTLS but the other 2 endpoints have rate limits. Not perfect but depending on security requirements and personal paranoia level this might work. |
|
Any progress on this? Waiting for this so badly! This is the cherrie on the pie ;-) |
|
Looks like there was finally a release yesterday. I think this one finally has it. I have verified that it works great! |
|
Interesting. I do only have the root certificate in the reverse proxy but my client certificate has the whole chain. Mostly because I have a few different intermediate certificates depending on the context.
Might just have to swallow the loss and put multiple intermediate certificates into my reverse proxy
Sent from [Proton Mail](https://proton.me/mail/home) for iOS.
…-------- Original Message --------
On Wednesday, 06/24/26 at 00:46 Kevin ***@***.***> wrote:
Just fixed mine, turns out I only had the root CA cert listed in the reverse proxy instead of the whole chain with the intermediate. It had worked during testing on a browser but not the app. I assume the app was filtering for certificates signed by the trusted cert sent from the proxy.
—
Reply to this email directly, [view it on GitHub](#15491?email_source=notifications&email_token=AK6FYDPZ46A7CWJK3YACOI35BMJD7A5CNFSNUABIM5UWIORPF5TWS5BNNB2WEL2ENFZWG5LTONUW63SDN5WW2ZLOOQXTCNZUGEZTKOJXUZZGKYLTN5XKO3LFNZ2GS33OUVSXMZLOOSWGM33PORSXEX3DNRUWG2Y#discussioncomment-17413597), or [unsubscribe](https://github.com/notifications/unsubscribe-auth/AK6FYDNJ2DZWQ6KAPGPJJ3T5BMJD7AVCNFSNUABGKJSXA33TNF2G64TZHM2TGNJTHA4DSOJ3IRUXGY3VONZWS33OHM4DKNBQGI2DJILWAI).
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
|
You all were right. The app was only sending the leaf cert in the handshake, not the intermediate, so a proxy that only trusts the root CA can't build the chain and bails. Browsers and Android send the whole chain from the .p12, which is why it worked everywhere but here. @thescienceguykris you shouldn't have to swallow the loss permanently, root-only proxy + full-chain .p12 is exactly the case that was broken. I put up a fix:
Now it pulls the intermediates out of the .p12 on import and sends the full chain. Backward compatible, so flat-CA setups are unaffected — once it lands just re-import your .p12. Until then the workaround still works: drop the intermediate into your proxy's client-CA bundle (ssl_client_certificate on nginx). |
Uh oh!
There was an error while loading. Please reload this page.
Select Topic Area
✅ Code Contribution Proposal
Code Contribution Proposal
Feature Description
Implementation of client certificate authentication (mTLS) support for iOS app when connecting to self-hosted Bitwarden environments that require client certificates.
Related Feature Request
Implementing mTLS in the Bitwarden apps
Proposed Implementation
Screenshots
Technical Details
Files Modified/Added
Testing
Looking for feedback from the community and Bitwarden team before submitting the pull request.
All reactions