Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

show entire certificate chain for a local certificate file

I have a certificate (for example this one) saved in a local file. Using openssl from the command line, how can I display the entire chain from this certificate to a root CA? I tried:

openssl verify -verbose -purpose sslserver -CApath /etc/ssl/certs InCommonServerCA.txt

and got this confusing output that only seems to show the leaf certificate:

InCommonServerCA.txt: C = US, O = Internet2, OU = InCommon, CN = InCommon Server CA
error 26 at 0 depth lookup:unsupported certificate purpose
OK

Any ideas?

like image 292
cberzan Avatar asked Aug 31 '25 21:08

cberzan


1 Answers

For local certificates you can see the subject and direct issuer using:

openssl x509 -noout -subject -issuer -in test.crt
subject= /C=US/ST=Utah/L=SLC/O=My Organization/CN=my.server.com
issuer= /C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - SHA256 - G2

But that doesn't indicate if the certificate includes any intermediate certificates or the full chain of trust. The verify command you listed will fail if your system cannot validate the chain (example: you are missing an intermediate certificate or the root is not trusted), showing an error message like:

error 20 at 0 depth lookup:unable to get local issuer certificate

If you want to verify each entry in the file, you can use this script to show the chain of trust for a local certificate:

~ % ssl_chain.sh google.crt
 0: subject= /C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer= /C=US/O=Google Inc/CN=Google Internet Authority G2
 1: subject= /C=US/O=Google Inc/CN=Google Internet Authority G2
issuer= /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
 2: subject= /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
issuer= /C=US/O=Equifax/OU=Equifax Secure Certificate Authority

google.crt: OK
like image 138
Greg Bray Avatar answered Sep 04 '25 22:09

Greg Bray