Correct. If neither is set no CRL checking is done.
I’ve also confirmed that all files must be in PEM format, not DER.
You don’t need python to convert from DER to PEM. Just use…
openssl crl -inform DER -in crl.der -outform PEM -out crl.pem
I did find another bug in addition to the crash you reported… I was setting CRL_CHECK_ALL on the certificate store in addition to CRL_CHECK and this was causing issues. When I remove that flag, I can successfully use CRL checking on MY generated CA, intermediate certificates and CRLs. Yours however are still an issue.
One thing that’s missing from the openssl verify
command line I gave you was the -crl_check
so no crl checking was being done. If you add that parameter verification fails with the same error that asterisk shows.
openssl verify -show_chain -verbose -CApath ./capath -CRLfile crl.pem -crl_check 7509624163b221b0.cer
CN=SHAKEN FRTE00, O=Orange, C=FR
error 3 at 0 depth lookup: unable to get certificate CRL
error 7509624163b221b0.cer: verification failed
If you look at the 15 and 7509624163b221b0 certificates you’ll see that they point to two different CRLs and the two CRLs were issued by two different CAs.
15…
X509v3 CRL Distribution Points:
Full Name:
URI:https://api.man-bpco.fr/ca/crl CRL Issuer:
DirName:C = FR, O = Base des Certificats Op\C3\A9rateurs, CN = BPCO R1 - SHAKEN Root
C = FR, O = Base des Certificats Opérateurs, OU=Certificate Authority CN=BPCO R1 - SHAKEN Root
7509624163b221b0…
X509v3 CRL Distribution Points:
Full Name:
URI:https://api.man-bpco.fr/crl CRL Issuer:
DirName:CN = BPCO PA1, O = Base des Certificats Op\C3\A9rateurs, OU = Policy Authority, C = FR
CRL Issuer:
DirName:CN = BPCO PA2, O = Base des Certificats Op\C3\A9rateurs, OU = Policy Authority, C = FR
If you pull down both CRLs, and dump them, you’ll see that the CRL from https://api.man-bpco.fr/crl is an “Indirect CRL” was actually issued by https://api.man-bpco.fr/ca/certs/13.cer
I have no idea how an “Indirect CRL” is supposed to verify but I’ll do more research.
If you pull down the CRL referenced in the intermediate certificate, the intermediate certificate itself does verify.
openssl verify -show_chain -verbose -CApath ./capath -CRLfile crl_from_int.pem -crl_check 15.cer
15.cer: OK
Chain:
depth=0: CN=BPCO CA1 - SHAKEN Intermediate, O=Base des Certificats Opérateurs, OU=Certificate Authority, C=FR (untrusted)
depth=1: CN=BPCO R1 - SHAKEN Root, O=Base des Certificats Opérateurs, OU=Certificate Authority, C=FR