1

I am trying to verify the chain for flo2cash.com openssl gives me this: openssl s_client -showcerts -connect flo2cash.com:443
CONNECTED(00000003) depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA depth=0 OU = Domain Control Validated, OU = Hosted by FreeParking Ltd, OU = COMODO SSL, CN = flo2cash.com

Indicating that the root is "AddTrust External CA Root" Both Chrome and Firefox only show 3 levels in the chain with the cert rooted at "COMODO RSA Certification Authority"

If I check the last certificate in the chain I get this: subject= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority issuer= /C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root notBefore=May 30 10:48:38 2000 GMT notAfter=May 30 10:48:38 2020 GMT

This certificate is really old.

This is what is in the CA bundles that I can find on my machine (Fedora 25 patched to the latest), and also the browsers:

subject= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority issuer= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority notBefore=Jan 19 00:00:00 2010 GMT notAfter=Jan 18 23:59:59 2038 GMT

That old cert must be coming from somewhere.

0

On my Mint laptop I have the old certificate:

$ openssl x509 -noout -subject -issuer -in /usr/share/ca-certificates/mozilla/COMODO_RSA_Certification_Authority.crt 
subject= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
issuer= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority

openssl s_client returns the most superior CA certificate as COMODO RSA Certification Authority which is signed by the above root:

$ openssl s_client -connect flo2cash.com:443
CONNECTED(00000003)
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = Hosted by FreeParking Ltd, OU = COMODO SSL, CN = flo2cash.com
verify return:1
---

Edit /etc/ca-certificates.conf and deselect the line containing the above root CA certificate (mozilla/AddTrust_External_Root.crt):

#
# line begins with # is comment.
# line begins with ! is certificate filename to be deselected.
#
mozilla/ACCVRAIZ1.crt
mozilla/ACEDICOM_Root.crt
!mozilla/AC_Raíz_Certicámara_S.A..crt
mozilla/Actalis_Authentication_Root_CA.crt
!mozilla/AddTrust_External_Root.crt
mozilla/AddTrust_Low-Value_Services_Root.crt
mozilla/AddTrust_Public_Services_Root.crt
mozilla/AddTrust_Qualified_Certificates_Root.crt

Run update-ca-certificates to rebuild your cache.

After that, you'll get the same chain as your browser:

$ openssl s_client -connect flo2cash.com:443 -showcerts
CONNECTED(00000003)
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = Hosted by FreeParking Ltd, OU = COMODO SSL, CN = flo2cash.com
verify return:1
---

The path that a client builds from the end-entity certificate to the root CA certificate is dependent on the logic programmed within the client. This isn't defined in the specs, therefore is subject to the interpretation of the developers of each particular client.

With both root CA certificates enabled in OpenSSL it chooses the first path shown. Your browsers chose differently, because they can.

0

Which old certificate? The bridge cert for Comodo RSA Certification Authority from AddTrust External CA Root is sent by the server. The root cert for AddTrust External must come from your system's truststore; it is not sent by the server, and even if it were OpenSSL correctly discards any root received from the server and only trusts a root it finds in the local truststore. I don't use Fedora but my CentOS has it in the /etc/pki/tls/certs/ca-bundle.crt installed from ca-certificates (and presumably RHEL the same).

Yes, this AddTrust root is one of the older CA roots still active. Although the bridge cert has notBefore 2000-05-30 10:48:38 aligning perfectly (and unrealistically) with its parent, I'm sure that was backdated; it is signed with SHA384 but FIPS180-2 wasn't published until 2002, much less widely implemented. (E.g. Windows XP didn't implement SHA2-signed certs until SP3 in 2008.)

Comodo RSA's own root has notBefore 2010-01-19 00:00:00 but may well be backdated also, or else it was kept on the shelf for a while; it is also signed with SHA384 but AIR none of the public CAs started doing SHA2 issuance and chains until the beginning of 2014 (NIST's second attempted deadline) and most not until late 2015 when CABforum and some major browsers started actually complaining about SHA1. I don't recall where Comodo fell on this spectrum, but the one truststore I can easily track over time, Oracle-formerly-Sun Java, didn't add comodorsaca until 8u51 in 2015-06. (It had addtrustexternalca back at least to 6u7 in 2008-06; I don't have the data before that.)

At least one part of Comodo's website still shows the trust chain via the bridge cert to AddTrust as correct, even though it expires in less than 3 years.

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.