Hi Folks --

0) Beware that I am not an expert in this area.  What follows is
 probably mostly true, but I'm still feeling my way to some extent.

1) There are actually some people who are using v3 nameConstraints.
 Not a lot, but some.

 An example can be found in one of the fully-trusted root certificates
 that is distributed in the current Ubuntu release, and several previous
 releases:
   /etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem
 which is a symlink to
   
/usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2011.crt

 Let's take a look at it:
 openssl x509 -text -noout < 
Hellenic_Academic_and_Research_Institutions_RootCA_2011.crt
 [snip]
            X509v3 Name Constraints: 
                Permitted:
                  DNS:.gr
                  DNS:.eu
                  DNS:.edu
                  DNS:.org
                  email:.gr
                  email:.eu
                  email:.edu
                  email:.org

 2) Note the leading "." in each item in the permission list.
    a) This seems entirely logical and reasonable to me.
    b) All the documentation and examples I've seen on the web assume
     the "." should be there.  It's not even a topic of discussion.

 3) Desired behavior:  openssl should tolerate the leading "."

  Question:  Does anybody think the leading "." should be mandatory?
             Or should we tolerate it either way????

 4) Observed behavior:  As of openssl-1.0.1i the leading "." is
  not tolerated.   In particular:

   openssl verify -verbose -check_ss_sig -CAfile $CA_NAME-cert.pem  
$TARGET-cert.pem
   server.example.net-cert.pem: C = US, CN = server.example.net
   error 47 at 0 depth lookup:permitted subtree violation

   In more detail: I added some debugging printf statements:

   ====     checking DNS 'www.example.net' against '.example.net' ... result: 47
   ====     checking DNS 'www.example.net' against 'example.net' ... result: 0

   The certs I used to test this can be found at
     http://www.av8n.com/openssl/namecon-ca-cert.pem
     http://www.av8n.com/openssl/server.example.net-cert.pem

   If somebody wants the ugly little config files I used to create those 
   certs, they can be provided.

 5) Here is a patch that seems to make the problem go away.
      http://www.av8n.com/openssl/leading-dot.patch
  I do not guarantee that this is high-security industrial-strength code, 
  but it should suffice to let people know where I think the issue lies.

  If somebody wants to take a closer look at what the code is doing,
  here is a bundle of debugging printf statements:
      http://www.av8n.com/openssl/namecon-printf.patch
  This is not meant to be elegant.
  It's quick-and-dirty experimentation.
  I found it useful.  YMMV.

-------------------

Let's discuss this on the -dev list for a little while to see if anybody 
has any better insight as to what's going on.  Then maybe we can send it 
over to the request tracker.

There's more I could say about this, but I'll stop here for now.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to