2

I recently installed the Light (a more compact forking of Firefox).

I started getting the "This Connection is Untrusted" error, which got me wondering: when should I add an exception to the list of trusted certificates? Yes, this gets at the issue of trust, and that is an enormous problem in itself. But let us suppose that I felt comfortable trusting the certificates that came bundled in my browser (whether it be Firefox, Light, or IE)

In my case, the error is (Error code: sec_error_unknown_issuer). It must be that Light doesn't have the full list of trusted authorities that the full Firefox does.

I can see the certificate in question, and I can see the name of the issuer of the certificate (in my case, Starfield Secure Certificate Authority - G2). And yes, if I go to the big Firefox list of trusted certificates, I can see similar names there (Starfield Services Root Certificate Authority - G2, and Starfield Root Certificate Authority - G2), although not an exact match.

But I imagine that is not enough: it is not an exact match. But let us go further: let us assume that the name of the issuer were a perfect a match. Presumably, if a website is trying to steal my information, or run malicious code in my browser, it will be smart enough to fake the name of a trusted certificate provider. What is it in the certificate itself that I must verify to make sure that the certificate that I am being presented is authentic, and there is not some bozo somewhere faking a trusted certificate? And, is there a way to get that authentic certificate from the horse's mouth, so to speak, instead of from the webpage I am currently trying to browse?

1

The question is, assuming you've decided which CA's (Certificate Authorities) to trust, how do you get their certs. If you trust "Starfield Services Root Certificate Authority - G2" and you want to know if you should trust the hypothetical ""Starfield Services Root Certificate Authority - G3" (for example), you do have to "get it from the horse's mouth" as you put it.

There are a few options... Easiest is, if Starfield helpfully "bootstrapped" their own trust for you. If "Starfield (trusted) CA" signed the "Starfield (new) CA" cert, then you could trust it is authentic.

If not, then you need to get the public key from Starfield in some way that makes you confident it is really theirs, then use that to verify the signature/fingerprint on the new CA cert they've issued.

From a practical standpoint, if you trust some browser to have done the legwork for you, you can grab the trusted CA cert from its truststore.

Ultimately, you choose which CA's to trust in their job of asserting other websites' legitimacy. You make that choice by your choice of CA certs in your truststore, or you let your chosen browser make that choice for you. If SuspiciousWebsite(tm) presents you with something signed by LegitimateSoundingCAYouDontHave, that's when you need to decide if you trust that CA or not. I'd never accept an unknown CA cert offered up to me by some website. Either get the root cert from some other browser's truststore, or directly from the CA entity itself.

Once you've accepted a CA cert, you trust anything that cert signs. If you let a badguy's fake CA cert in, that bad guy can trivially spoof your bank or any other site.

  • And what would you do with the numerous certificates that come bundled with the OS or browser these days? How do we verify that every one of them is not a bad guy's certificate? – user21820 Jun 11 '18 at 17:17
  • Practically, you don't. As I mentioned above, IF you trust your browser... Same goes for your OS. If you want to verify everyone of them for yourself, that's a lot of work. You could remove everything you don't know, see what breaks, and start adding them back in one at a time, after vetting their identity. I never said it was easy. But I don't think that's directly relevant to OP's question. – JesseM Jun 11 '18 at 18:20
  • I'm not saying it's directly relevant to the original question here, and was just asking your opinion on how to handle this issue. Contrary to what you just said, it is not simply a matter of trusting my browser (or OS). I do trust my browser, but not the CA system, because the original certificates in the trust store may be all legitimate but the CA may issue a fraudulent certificate just tomorrow, and that is all the bad guy needs to trivially spoof any site. – user21820 Jun 12 '18 at 3:36
  • 1
    Agreed. The "CA system" is fragile. Through incompetence or intent, a single bad actor CA can break the trust model. But that is implicit in trusting the OS and browser truststore. You trust them not only tp assert identity, but also to do their job correctly and security. By analogy, PGP had two trust metrics for keys in your key chain, how much you trusted the validity of the key (e.g. I met you in person, vs I got the key of a public server somewhere) and how much you trusted that person's verification abilities when they signed something. CA certs implicitly max both metrics. – JesseM Jun 12 '18 at 20:22
  • Yes I totally understand. Unfortunately, I have not found any reasonable way to mitigate the issue. It is nearly impossible to verify SSL certificates of a website today, and many of them use certificates issued by CAs that have been known to issue fraudulent certificates (whether negligently or not). – user21820 Jun 13 '18 at 8:37
0

You would usually want to compare the "thumbprint" of the certificates. That is what is used in code when evaluating whether the certificate being presented matches an existing certificate in a repository of white listed certificates.

Using this mechanism, you would typically want to trust the certificate of the authority so any certificate that is issued by that authority will also be trusted by the browser, by walking up the certificate chain and verifying the root. Hope this answers your question.

  • And what if Starfield Secure Certificate Authority - G2 is some sort of subsidiary of Starfield Root Certificate Authority - G2, for instance, but has a different fingerprint from it? How would I know to trust it? – ltcomdata Nov 14 '14 at 4:25
  • In fact, I have found the certificates for both "Starfield Services Root Certificate Authority - G2", and "Starfield Root Certificate Authority - G2" in the entrails of Light, and their fingerprints are different from "Starfield Secure Certificate Authority - G2". – ltcomdata Nov 14 '14 at 4:37
  • This was not in your original question so I did not address. You would match certificates by thumbprint. The question now is which certificates to trust. If you go by the list you sent in your original question, "Starfield Security Certificate Authority - G2" does not seem to be listed there. You can either choose to just trust that list and leave others or do an evaluation yourself. Browser companies/orgs actually do this and their lists sometimes vary. You might also want to check if one of those certificates is signed by another. – Omer Iqbal Nov 14 '14 at 8:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.