On Thu, Jul 03, 2014 at 08:34:16PM +0200, Jakob Bohm wrote:

> >>For X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS:
> >>Is that the "leftmost" rule? I.e., a wildcard must be at the leftmost label?
> >
> >No, it is exactly what is described.  When the bit is clear such partial
> >wildcards are allowed.
> 
> So without the bit, a certificate can specify that it applies to
> "*www.example.com" and match servers "onewww.example.com",
> "twowww.example.com" etc. but not "onepay.example.com", while with
> the bit, the only acceptable certificates are those issued to
> exactly "*.example.com" or each of "onewww.example.com" and
> "twowww.example.com"
> 
> Did I get that right?

Yes, with the "or each of" cases matching only the corresponding
reference identity specified by the caller.

> >>What is the purpose of allowing a leading dot for a hostname? I.e.,
> >>why is ".example.com" allowed?
> >
> >It allows the verifier to specify a parent domain, rather than a
> >particular host.  Any host in that domain or sub-domain matches.
> >
> >>A leading dot does not appear to be a valid hostname nor a well formed
> >>FQDN. I don't recall reading about it in the RFCs or the CA/B Forums
> >>(RFCs 5280, 6125 or CA/B Baseline Requirements). I would expect a
> >>certificate with it to be rejected as malformed.
> >
> >This name is NOT in the certificate.  It is a fuzzy reference identity.
> 
> So you mean if ".example.com" is passed as the "hostname to match"
> argument to X509_VERIFY_PARAM_set1_host() or X509_check_host(), then
> it will accept any certificate issued to www.example.com,
> mail.example.com, internal.mail.example.com, *.example.com or
> *.mail.example.com, as just a few examples?

Yes.

> By the way does ".example.com" also match the bare "example.com"?

No, it does not.  However, once can call X509_check_host() multiple
times with different arguments.  On the "master" branch, one can also
specify multiple names via X509_VERIFY_PARAM_set1_host() and
X509_VERIFY_PARAM_add1_host().

> >Applications that process EV certs can disable wildcards in name checks
> >via the appropriate flag.
> 
> The common case is that an application accepts both EV and non-EV certs
> during the TLS (etc.) handshake, then informs the user (via a color or
> icon) if the negotiated cert is EV or not.

The EV CAs have been strong-armed against their will to not sell
wildcard certs, so the application need not bother disabling
wildcards for this case.

> Thus to be a meaningful audited replacement for each application coding
> its own certificate verification logic, the API introduced in OpenSSL
> needs to handle that scenario, since it is the most common case.

I am not convinced this is worth the effort.  What would be more useful
is a property one can query that returns the name that matched.  I'll
probably add that when I get a chance.

-- 
        Viktor.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to