gnutls fails to use Verisign CA cert without a Basic Constraint
Douglas E. Engert
deengert at anl.gov
Mon Jan 12 17:09:41 CET 2009
OK, see form below.
Simon Josefsson wrote:
> "Douglas E. Engert" <deengert at anl.gov> writes:
>
>> Simon Josefsson wrote:
>>> "Douglas E. Engert" <deengert at anl.gov> writes:
>>>
>>>> Simon Josefsson wrote:
>>>>
>>>>> The default is to reject V1 CA's, so the application need to supply
>>>>> either flag if they want a particular behaviour.
>>>>>
>>>>> By default, gnutls_x509_crt_list_verify rejects V1 CAs, but it takes a
>>>>> flags parameter. If you call the verification through
>>>>> gnutls_session_verify_peers, you can use the
>>>>> gnutls_certificate_set_verify_flags function to set the flags to use
>>>>> (like cli.c does).
>>>> That will be a problem, as the application is ldap used by nss-ldap.
>>>> I have not looked at how they call gnutls, but we don't want to have to
>>>> changes these too.
>>>>
>>>> One could argue the application already provides the list of CA certs
>>>> it is willing to trust, so why does it need to provide an additional flag?
>>> I believe it would break ABI/API compatibility to change this now --
>>> applications assume that V1 CA are rejected since that has been the
>>> documented behaviour for several years.
>>>
>>> It seems like a bug in the ldap/nss-ldap code that it doesn't pass the
>>> V1 flag if it really wants GnuTLS to permit V1 CA's.
>> Its not the application that wants it. As far as I can tell previous
>> versions of ldap using OpenLDAP do not have the problem, and only
>> after Ubuntu back ported the December fixes did this problem start
>> occuring.
>
> The December fixes solved a security problem where some CA certificates
> were simply ignored by the validation code, so maybe it only worked by
> accident before.
>
>> I understand that you don't want to change your code.
>
> I don't see anything wrong with the code -- with the patch installed on
> gnutls 2.6.x, it should behave as per the documentation.
>
>>> For things that aren't documented, I think we can be pragmatic and come
>>> up with quick fixes and apply them to the v2.6.x branch as needed. But
>>> anything that changes documented and intended behaviour is not
>>> appropriate for our stable branch IMHO.
>>>
>>>> If the code change on you TODO list to stop when an intermediate CA cert
>>>> is found on the trusted CA list, then this would solve my problem,
>>>> as the intermediate cert is V3 and has CA:TRUE, and is trusted.
>>> Yup. Fixing that would be neat, and could go onto the v2.7.x branch
>>> which we could release as the next stable branch relatively quickly.
>> Actually I wrote a mod on this Friday, to do this. I need to clean it
>> up today and send it in for your review.
>>
>> The CA in question is a Verisign cert used to sign an intermediate cert:
>> http://www.verisign.com/support/verisign-intermediate-ca/secure-site-intermediate/index.html
>> So trusting this intermediate V3 cert would work for us.
>
> Thanks! Several people have asked about this feature, solving it would
> be useful.
>
> If the patch is over 10 lines long we will need a copyright assignment
> before we can apply it though. If you want to speed up the process, you
> could fill out the form below now.
>
> /Simon
>
> Please email the following information to assign at gnu.org, and we
> will send you the assignment form for your past and future changes.
>
> Please use your full legal name (in ASCII characters) as the subject
> line of the message.
> ----------------------------------------------------------------------
> REQUEST: SEND FORM FOR PAST AND FUTURE CHANGES
>
> [What is the name of the program or package you're contributing to?]
GnuTLS
>
>
> [Did you copy any files or text written by someone else in these changes?
> Even if that material is free software, we need to know about it.]
No.
>
>
> [Do you have an employer who might have a basis to claim to own
> your changes? Do you attend a school which might make such a claim?]
No. No.
>
>
> [For the copyright registration, what country are you a citizen of?]
U.S.
>
>
> [What year were you born?]
1946
>
>
> [Please write your email address here.]
deengert at anl.gov
>
>
> [Please write your postal address here.]
Argonne National Laboratory
9700 South Cass Avenue
Argonne, Illinois 60439
>
>
>
>
>
> [Which files have you changed so far, and which new files have you written
> so far?]
Changed: src/lib/x509/verify.c
>
>
--
Douglas E. Engert <DEEngert at anl.gov>
Argonne National Laboratory
9700 South Cass Avenue
Argonne, Illinois 60439
(630) 252-5444
More information about the Gnutls-devel
mailing list