Certificate is not trusted on Android

Dear Letsencrypt Team,

Recently I faced to a problem - on some of Android devices (primary older one like Galaxy Note 3 with Android 5.0) your certificate is not trusted any more throwing following exception:

Handshake Exception Handshake error in client (OS Error: Certificate_Verify_Failed: unable to get local issuer certificate (handshake.cc:354))

Chrome browser on these devices does not recognize the certificate as well but interesting is that on same device Samsung’s browser works fine!

My domain is: www.fellow7000.com

I ran this command: n/a

It produced this output: n/a

My web server is (include version): IIS10 on Windows

The operating system my web server runs on is (include version): Windows (now Idea which version)

My hosting provider, if applicable, is: Mocha Host

I can login to a root shell on my machine (yes or no, or I don’t know): no

I’m using a control panel to manage my site (no, or provide the name and version of the control panel): Solid CP

The version of my client is (e.g. output of certbot --version or certbot-auto --version if you’re using Certbot): no idea

Everything was working fine couple of months ago but now does not any more…

You support will be highly appreciated!

Thanks in advance!

You’re sending the intermediate certificate signed by the ISRG Root X1 root certificate in your certificate chain. While this root certificate is accepted in many modern root certificate stores, it isn’t in older stores like your old Android versions.

You should use the intermediate certificate signed by the DST Root CA 3 root certificate from IdenTrust (called Let’s Encrypt Authority X3 (IdenTrust cross-signed) in the document below).

See https://letsencrypt.org/certificates/ for more information.

Thank you very much for your prompt response!

As I’m nub in SSL stuff, could you please point me how I can install this intermediate certificate while I am on shared hosting at Mocha w/o root access?..

Sorry for stupid questions…

I don’t know really. Also depends on how you got and installed the certificate in the first place.

It’s generated automatically in the control panel of the hosting provider.

Then it’s something you’ll have to discuss with your hosting provider. Ask them if they could change the intermediate certificate signed by the ISRG root to the intermediate certificate signed by the IdenTrust (DST Root CA 3) root.

Ok, thanks a lot! That’s exactly what I am trying to do right now :slight_smile:

Hi Osris,

I had an exchange with Mochahost support, they believe that everything is ok with the certificates on the server side. As a prove they send me this report:


and the following certificate

isrgrootx1.txt (1.9 KB)

Does it sound plausible?.. I still believe, this is an issue on hosting side.

Well, they do have a point there isn’t anything wrong with their setup. It’s just less suitable for you because they chose to use the “state of the art” root certificate, which is only accepted in recent root stores.

There is also nothing wrong with choosing the “older” DST Root CA 3 intermediate certificate. But that one is broader accepted, for example, in older Android versions.

I am however curious about why they decided to use the intermediate cert signed by the ISRG root. Because there is nothing wrong with the “older” DST Root. And while it expires relatively soon, that is still more than a year away (August 2021!).
There are even more arguments to use the DST root:

  • Normally, the ACME server sends not only the end leaf certificate requested by the user, but also the intermediate certificate. Let’s Encrypt currently still sends the intermediate signed by the DST Root CA X3 certificate, NOT the newer ISRG root signed intermediate;
  • Let’s Encrypt uses the DST Root on their own websites.

This all improves compatibility with older clients like your Android phone.

So to summarize: there isn’t anything wrong with their choice, it’s more that their choice is strange and leads to less compatible websites when there isn’t really a good reason to do so.

1 Like

ok, I see. my problem is, Mocha is convinced, they are all fine, I even send them the link to our conversation here…

Is there any way you issue the proper intermediate certificate for my case and I just forward it to them and ask for installation?.. probably it will be the easiest way to overcome the issue.

The intermediates can just be swapped. Both intermediates (i.e., signed by the DST Root CA3 and the one signed by the ISRG root) have the same key pair “in them”. So swapping out the intermediates can be done without requiring a new certificate for your server.

The intermediates can be downloaded from the page I linked before: https://letsencrypt.org/certificates/ They’d need to swap out the ISRG signed intermediate by Let’s Encrypt Authority X3 (IdenTrust cross-signed).

However, I’m not sure they technically can do that (I’m not familiair with the workings of IIS).

This is WAY outside the Let’s Encrypt wheelhouse, and I’m not saying you should do this, but another option is to update your Android device with a newer OS version.

For example, LineageOS supports a few models of the Galaxy Note 3, and would effectively update you to Android 9 (Pie). That would make the current problem go away.

Of course, that may not be practical for your situation, and you may not be comfortable replacing the OS on your phone. But it would extend the useful life of the device and avoid a few more future issues as Android 5 is less and less supported over time.

In fact there is nothing wrong sending both the two signing certificates at the same time. That would be the most stable set-up. (It is somehow would still work after August 2021, even is they do not update the certificate chain until that time.)

That would increase the size of the TLS handshake and perhaps slow it down.

I think the hosting provider should just use the DST root until it (almost) expires.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.