[cabfpub] Critical CRL extensions

Yngve N. Pettersen (Developer Opera Software ASA) yngve at opera.com
Fri Oct 26 17:28:43 MST 2012


On Sat, 27 Oct 2012 01:55:05 +0200, Rick Andrews  
<Rick_Andrews at symantec.com> wrote:

> Yngve,
>
> The reason code isn't new, and it should be easy to parse. Wouldn't it  
> have been easy for OpenSSL to make this a "known" extension?

It may not be new; but the only extensions OpenSSL currently does not set  
the critical flag for is Certificate Issuer, Issuing Distribution Point  
and Delta CRL.

AFAICT the only way to override OpenSSLs handling is to patch the code  
deep inside the CRL parsing code (crypto/asn1/x_crl.c); there is no other  
way to add recognized extensions.

Critical is AFAIK a flag that should only be set when handling of the  
extension is vital to process the content correctly, and when it is better  
for the client to fail the connection than continue after ignoring the  
extension.

The verification code in OpenSSL contain this comment:

	/* The rules changed for this... previously if a CRL contained
	 * unhandled critical extensions it could still be used to indicate
	 * a certificate was revoked. This has since been changed since
	 * critical extension can change the meaning of CRL entries.
	 */

Additionally, the Reason Code extension is *defined* by RFC 5280 as  
non-critical

<http://tools.ietf.org/html/rfc5280#section-5.3.1>

    "The reasonCode is a non-critical CRL entry extension that identifies
    the reason for the certificate revocation"

Essentially this says that the Reason Code MUST NOT be marked critical,  
which I guess is why OpenSSL did not add it to the list of extensions it  
checks in the criticality check loop.


>> -----Original Message-----
>> From: public-bounces at cabforum.org [mailto:public-bounces at cabforum.org]
>> On Behalf Of Yngve N. Pettersen (Developer Opera Software ASA)
>> Sent: Friday, October 26, 2012 3:19 PM
>> To: public at cabforum.org
>> Subject: [cabfpub] Critical CRL extensions
>>
>> Hi,
>>
>> The past week I have noticed two reports about sites failing in Opera
>> 12.10 Beta.
>>
>> The reason for the failures turn out to be that the CRLs specified in
>> the
>> certificates, include the use of extensions (specifically the reason
>> code
>> extension)  that are marked critical. The crypto library Opera 12.10
>> uses,
>> OpenSSL 1.0.1x throws a Critical extension error when noticing this,
>> and
>> as a result Opera treats the failure as a CRL signature failure, which
>> is
>> considered a fatal error.
>>
>> The reason OpenSSL changed behavior is that the IETF PKIX WG recently
>> changed the recommendations of how critical extensions in CRLs should
>> be
>> handled, and that unknown critical extensions should cause the CRL
>> validation to fail.
>>
>> This is a heads up to consider carefully if a CRL extension really need
>> to
>> be marked critical. My assumption is that one will only need to do so
>> in
>> special applications where the relying party software is tightly
>> controlled, not general WebPKI.
>>
>> At present this seems to be limited to a single Root CA (Trusted by
>> several rootstores, but is not a member of the CABForum).
>>
>> --
>> Sincerely,
>> Yngve N. Pettersen
>> ********************************************************************
>> Senior Developer		     Email: yngve at opera.com
>> Opera Software ASA                   http://www.opera.com/
>> Phone:  +47 96 90 41 51              Fax:    +47 23 69 24 01
>> ********************************************************************
>> _______________________________________________
>> Public mailing list
>> Public at cabforum.org
>> https://cabforum.org/mailman/listinfo/public


-- 
Sincerely,
Yngve N. Pettersen
********************************************************************
Senior Developer		     Email: yngve at opera.com
Opera Software ASA                   http://www.opera.com/
Phone:  +47 96 90 41 51              Fax:    +47 23 69 24 01
********************************************************************


More information about the Public mailing list