There is a problem connecting to the server - Self-signed Cert - Android #252

Closed
opened 2025-11-07 08:32:52 -06:00 by GiteaMirror · 22 comments
Owner

Originally created by @Joshndroid on GitHub (Jul 26, 2018).

So finally got myself up and running today.
Self-hosted windows docker on windows server 2016.
Utilised the self-signed cert option during install.

Have smtp settings finally sorted.
Can connect locally from pc web browser and using the firefox extention. All is good.

Install the android app from the store, configure it up the same as the firefox extension, cannot connect to the server.

Pulled the certificate.crt from bwdata from device placed on android sd card and add to certificates for both 'VPN and apps' and 'wifi' still no connection. I have checked permissions and granted the app everything (only storage and camera listed on android oreo 8.1

I'm at a loss at what could be causing this?

I've googled and read both here and reddit and can't seem to find an answer.

I have read that you may not have an answer, can i somehow force a new cert using let's encrypt? or am i going to have to hard delete bwdata and re-install it again?

Cheers.

Originally created by @Joshndroid on GitHub (Jul 26, 2018). So finally got myself up and running today. Self-hosted windows docker on windows server 2016. Utilised the self-signed cert option during install. Have smtp settings finally sorted. Can connect locally from pc web browser and using the firefox extention. All is good. Install the android app from the store, configure it up the same as the firefox extension, cannot connect to the server. Pulled the certificate.crt from bwdata from device placed on android sd card and add to certificates for both 'VPN and apps' and 'wifi' still no connection. I have checked permissions and granted the app everything (only storage and camera listed on android oreo 8.1 I'm at a loss at what could be causing this? I've googled and read both here and reddit and can't seem to find an answer. I have read that you may not have an answer, can i somehow force a new cert using let's encrypt? or am i going to have to hard delete bwdata and re-install it again? Cheers.
Author
Owner

@kspearrin commented on GitHub (Jul 26, 2018):

There was a bug with the generated self-signed cert that was fixed in the upcoming version here: https://github.com/bitwarden/core/pull/327

You could try generating a new self-signed cert of your own, replacing what was generated in ./bwdata/ssl

@kspearrin commented on GitHub (Jul 26, 2018): There was a bug with the generated self-signed cert that was fixed in the upcoming version here: https://github.com/bitwarden/core/pull/327 You could try generating a new self-signed cert of your own, replacing what was generated in ./bwdata/ssl
Author
Owner

@Joshndroid commented on GitHub (Jul 27, 2018):

Thank you for your reply!

So i followed your advice...
Using ubuntu machine generated a new set of certificat.crt and private.key...

i transferred them into the certificate location in bwdata/ssl/self/bitwardendoman/

The browser recognized a new certificate not yet trusted (so i know it worked).

I added the new certificate.crt to /sdcard of android device
navigated to security -> encryption&credentials -> install from storage
From there found certificate and added it twice (once for VPN & apps & another for Wifi - just in case).

The app configured with my local domain and port...... No dice. still no connection to the server
Navigate using android firefox browser app to the local domain, instant connection && no requirement to trust a new certificate (as it would appear that the device has now trusted it).

Still not sure what the heck is going on.
Any ideas for me to try literally everything else is working just fine just cant connect from the most valuable aspect of the whole thing... the android app :(

@Joshndroid commented on GitHub (Jul 27, 2018): Thank you for your reply! So i followed your advice... Using ubuntu machine generated a new set of certificat.crt and private.key... i transferred them into the certificate location in bwdata/ssl/self/bitwardendoman/ The browser recognized a new certificate not yet trusted (so i know it worked). I added the new certificate.crt to /sdcard of android device navigated to security -> encryption&credentials -> install from storage From there found certificate and added it twice (once for VPN & apps & another for Wifi - just in case). The app configured with my local domain and port...... No dice. still no connection to the server Navigate using android firefox browser app to the local domain, instant connection && no requirement to trust a new certificate (as it would appear that the device has now trusted it). Still not sure what the heck is going on. Any ideas for me to try literally everything else is working just fine just cant connect from the most valuable aspect of the whole thing... the android app :(
Author
Owner

@kspearrin commented on GitHub (Jul 27, 2018):

Android app has some additional cert trust requirements. Are you able to check your website here:
https://www.digicert.com/help/

@kspearrin commented on GitHub (Jul 27, 2018): Android app has some additional cert trust requirements. Are you able to check your website here: https://www.digicert.com/help/
Author
Owner

@Joshndroid commented on GitHub (Jul 27, 2018):

I am not running it as a domain or a website.. I'm Literally running it local as I can such that it's hosted as internal ip and that is it. I want to just VPN in to sync while outside the home network which I do for everything else I host

@Joshndroid commented on GitHub (Jul 27, 2018): I am not running it as a domain or a website.. I'm Literally running it local as I can such that it's hosted as internal ip and that is it. I want to just VPN in to sync while outside the home network which I do for everything else I host
Author
Owner

@Joshndroid commented on GitHub (Jul 28, 2018):

I have tried again remade my entire bitwarden instance with a new installation ID
Browsers & browser extensions work.

Android app does not, even when trusted.

I am only running the instance in a local IP address.

There needs to be a check box or an option to decrease the harsh certificate requirements for the android app specifically. I see others are having a similar issue that seem to be similar #209

@Joshndroid commented on GitHub (Jul 28, 2018): I have tried again remade my entire bitwarden instance with a new installation ID Browsers & browser extensions work. Android app does not, even when trusted. I am only running the instance in a local IP address. There needs to be a check box or an option to decrease the harsh certificate requirements for the android app specifically. I see others are having a similar issue that seem to be similar #209
Author
Owner

@Joshndroid commented on GitHub (Jul 31, 2018):

Any other suggestions @kspearrin???... i know your busy as heck and im loving this program... would you consider adding something like the ability to directly import the signed cert to the windows and android program or add a checkbox to allow to reduce the high security with self signed certs.

@Joshndroid commented on GitHub (Jul 31, 2018): Any other suggestions @kspearrin???... i know your busy as heck and im loving this program... would you consider adding something like the ability to directly import the signed cert to the windows and android program or add a checkbox to allow to reduce the high security with self signed certs.
Author
Owner

@kspearrin commented on GitHub (Jul 31, 2018):

I am not sure. Only thing I can suggest is to purchase a trusted cert, or use let's encrypt to get a free trusted one.

@kspearrin commented on GitHub (Jul 31, 2018): I am not sure. Only thing I can suggest is to purchase a trusted cert, or use let's encrypt to get a free trusted one.
Author
Owner

@Crocmagnon commented on GitHub (Aug 1, 2018):

I don't think LE can provide you with a valid cert for an IP address 😕

@Crocmagnon commented on GitHub (Aug 1, 2018): I don't think LE can provide you with a valid cert for an IP address 😕
Author
Owner

@Joshndroid commented on GitHub (Aug 1, 2018):

It doesn't provide one for an internal ip address. If I can't get this working locally I might have to switch to something else 😢

@Joshndroid commented on GitHub (Aug 1, 2018): It doesn't provide one for an internal ip address. If I can't get this working locally I might have to switch to something else 😢
Author
Owner

@MrLuje commented on GitHub (Aug 30, 2018):

@Joshndroid I got the android app working with a manually generated certificate :

  • generate a first certificate that you will use as root CA
  • generate another certificate from the previous root CA and use this new cert in bwdata/ssl/self/
  • on your computer/android, add the root CA (not the bwdata/ssl/self/) to your trusted store (you can quickly check that it works for android by opening the web portal from any browser)
@MrLuje commented on GitHub (Aug 30, 2018): @Joshndroid I got the android app working with a manually generated certificate : - generate a first certificate that you will use as root CA - generate another certificate **from the previous root CA** and use this new cert in bwdata/ssl/self/ - on your computer/android, add the root CA (not the bwdata/ssl/self/) to your trusted store (you can quickly check that it works for android by opening the web portal from any browser)
Author
Owner

@marksarnold commented on GitHub (Sep 4, 2018):

Joshndroid - check out https://community.bitwarden.com/t/password-for-identity-pfx-in-self-hosted-mode/2114
I think that should work for you. Create your own self-signed certificate, and instead of entering a FQDN, enter your local IP. Worked for me.

@marksarnold commented on GitHub (Sep 4, 2018): Joshndroid - check out https://community.bitwarden.com/t/password-for-identity-pfx-in-self-hosted-mode/2114 I think that should work for you. Create your own self-signed certificate, and instead of entering a FQDN, enter your local IP. Worked for me.
Author
Owner

@dnetguru commented on GitHub (Dec 1, 2018):

I have a working installation of bitwarden_rs with an SSL certificate from my own self-signed CA which worked perfectly with the Bitwarden Android app.

However, my android app stopped working a couple of days ago and I checked and rechecked the entire CA chain, and every certificate and verified using various tools that the correct chain is being presented to the client. I also added the entire intermediate chain to my phone's trust store with no luck!

I noticed that there was a new version released (1.20.0) around the same time things stopped working, so I tried downgrading back to 1.19.0 and everything seems to work now so I'll stick to 1.19 for the time being.

Was something changed in terms of the requirement for the SSL certificate in this new version?

@dnetguru commented on GitHub (Dec 1, 2018): I have a working installation of bitwarden_rs with an SSL certificate from my own self-signed CA which worked perfectly with the Bitwarden Android app. However, my android app stopped working a couple of days ago and I checked and rechecked the entire CA chain, and every certificate and verified using various tools that the correct chain is being presented to the client. I also added the entire intermediate chain to my phone's trust store with no luck! I noticed that there was a new version released (1.20.0) around the same time things stopped working, so I tried downgrading back to 1.19.0 and everything seems to work now so I'll stick to 1.19 for the time being. Was something changed in terms of the requirement for the SSL certificate in this new version?
Author
Owner

@kspearrin commented on GitHub (Dec 1, 2018):

Nothing was changed directly. We did update some libraries, which may have changed something with HTTP. I am not sure.

@kspearrin commented on GitHub (Dec 1, 2018): Nothing was changed directly. We did update some libraries, which may have changed something with HTTP. I am not sure.
Author
Owner

@Clever-Data commented on GitHub (Dec 1, 2018):

Hi i can confirm the bug as well, after the recently updated android app attempting to login using a trusted self signed cert you now get "An error has occurred". you can attempt to add the trusted signing authority, or add the crt as trusted... still no difference.
This was working a when last tested a few weeks ago (maybe 2 weeks).

Thanks!

@Clever-Data commented on GitHub (Dec 1, 2018): Hi i can confirm the bug as well, after the recently updated android app attempting to login using a trusted self signed cert you now get "An error has occurred". you can attempt to add the trusted signing authority, or add the crt as trusted... still no difference. This was working a when last tested a few weeks ago (maybe 2 weeks). Thanks!
Author
Owner

@dnetguru commented on GitHub (Dec 1, 2018):

@kspearrin Alright, I'm going to install VS+Xamarin and try to find out what's going on then.

@Clever-Data are you using bitwarden_rs as well or the official containers?
I'm wondering since the error message is very generic and might not necessarily mean the certificate validation fails.

@dnetguru commented on GitHub (Dec 1, 2018): @kspearrin Alright, I'm going to install VS+Xamarin and try to find out what's going on then. @Clever-Data are you using `bitwarden_rs` as well or the official containers? I'm wondering since the error message is very generic and might not necessarily mean the certificate validation fails.
Author
Owner

@dnetguru commented on GitHub (Dec 1, 2018):

Okay, I spent the better half of the night debugging this and it seems like for some reason changing from targetSdkVersion 23 to 26 has introduced this issue: 9593f330db (diff-7ebd9bf43152d874f4b1505aa7097044R3)

We're hitting a JNI exception on AccountsApiRepository.cs#L40:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Even though, I have checked, and the entire certificate chain is sent by the server.
I find it very unlikely that there would be a regression like that in the Android SDK, but I will investigate and post a possible fix here.

@dnetguru commented on GitHub (Dec 1, 2018): Okay, I spent the better half of the night debugging this and it seems like for some reason changing from `targetSdkVersion` 23 to 26 has introduced this issue: https://github.com/bitwarden/mobile/commit/9593f330dbdfb211c95bd22699bef8546fab9f3e#diff-7ebd9bf43152d874f4b1505aa7097044R3 We're hitting a JNI exception on [AccountsApiRepository.cs#L40](https://github.com/bitwarden/mobile/blob/master/src/App/Repositories/AccountsApiRepository.cs#L40): ```javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.``` Even though, I have checked, and the entire certificate chain is sent by the server. I find it very unlikely that there would be a regression like that in the Android SDK, but I will investigate and post a possible fix here.
Author
Owner

@kspearrin commented on GitHub (Dec 2, 2018):

Build 1617 was pushed to the play store beta with the fix from @dNetGuru . Can you try it and see if the problem is solved? https://play.google.com/apps/testing/com.x8bit.bitwarden

@kspearrin commented on GitHub (Dec 2, 2018): Build 1617 was pushed to the play store beta with the fix from @dNetGuru . Can you try it and see if the problem is solved? https://play.google.com/apps/testing/com.x8bit.bitwarden
Author
Owner

@poldueta commented on GitHub (Dec 11, 2018):

@kspearrin Faced with the same issue in Play Store version. With beta build 1621 issue resolved. Waiting for release.

@poldueta commented on GitHub (Dec 11, 2018): @kspearrin Faced with the same issue in Play Store version. With beta build 1621 issue resolved. Waiting for release.
Author
Owner

@dg10a commented on GitHub (Dec 20, 2018):

Not sure if this should be a separate issue/feature request.

I'm still seeing this error when testing on the latest version in Play Store. My site is using client certificate authentication and the client certificates are installed in system certificate store.

EDIT: I am able to use the web interface and the Firefox extension.

@dg10a commented on GitHub (Dec 20, 2018): Not sure if this should be a separate issue/feature request. I'm still seeing this error when testing on the latest version in Play Store. My site is using client certificate authentication and the client certificates are installed in system certificate store. EDIT: I am able to use the web interface and the Firefox extension.
Author
Owner

@alexdelorenzo commented on GitHub (Jun 8, 2019):

This is still an issue with the latest version of Bitwarden on Android 9.0.

@alexdelorenzo commented on GitHub (Jun 8, 2019): This is still an issue with the latest version of Bitwarden on Android 9.0.
Author
Owner

@djusHa commented on GitHub (Jul 31, 2019):

@thismachinechills:
try this:
https://community.bitwarden.com/t/self-signed-certificate-on-local-network-works-with-chrome-iphone-and-android/2676

works for me on firefox and Android App

@djusHa commented on GitHub (Jul 31, 2019): @thismachinechills: try this: https://community.bitwarden.com/t/self-signed-certificate-on-local-network-works-with-chrome-iphone-and-android/2676 works for me on firefox and Android App
Author
Owner

@Sp1l commented on GitHub (May 22, 2021):

Just figured out why I got the 'Certificate Chain Validation Error' in the Android client.

OCSP stapling must be configured properly on the webserver.

My webserver jail has no outbound connectivity by default. After fixing OCSP stapling, the Android App works just fine!

@Sp1l commented on GitHub (May 22, 2021): Just figured out why I got the 'Certificate Chain Validation Error' in the Android client. **OCSP stapling must be configured properly on the webserver.** My webserver jail has no outbound connectivity by default. After fixing OCSP stapling, the Android App works just fine!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/android#252