Let's have certificate with more CRL distribution points. If no up-to-date CRL
is cached, Dirmngr will build list of DPs from the certificate and it will try
to fetch CRL from the last DP.
If CRL from such DP is available it is fetched and cached. If the CRL is
up-to-date, processing continues very well.
But If fetched CRL is expired, dirmngr will not try another DP from set of DPs
listed in the certificate and it will raise an error describing "CRL is too old".
This is undesired behavior, dirmngr should try to utilize other DPs.
In addition, If verifying certificate has more ancestors and some of their CRLs
are expired, higher level applications (like gpgme/gpgsm called from mutt) will
not signal proper error: Instead of "CRL too old" the just raise error without
explanation. (However dirmngr itself prints proper error message somewhere in
the middle of messages.) This second subbug is probably related to gpgsm or
gpgme or mutt, not to dirmngr directly.
Attached is tar ball containing two files: data and PKCS7 with signature and
complete certificate chain. If given CA will not respond to my complain
regarding not synced CRL DP mirrors promptly, you will get chance to test this
issue in reality.