Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-6143

SSL/TLS hostname verification does not strictly follow HTTPS RFC2818

    XMLWordPrintableJSON

Details

    • Unknown

    Description

      The HTTPS specification RFC 2818, section 3.1 states:

      If a subjectAltName extension of type dNSName is present, that MUST
      be used as the identity. Otherwise, the (most specific) Common Name
      field in the Subject field of the certificate MUST be used. Although
      the use of the Common Name is existing practice, it is deprecated and
      Certification Authorities are encouraged to use the dNSName instead.

      The current CertificateHostnameVerifier implementation in CXF does not follow this logic, even in STRICT mode. Instead, it builds an array of both CNs and subjectAltNames and checks each of them sequentially, in the order returned in the certificate.

      The proper approach would be to build a list of subjectAltNames having type dNSName. If the list is non-empty, matching should proceed against this list ONLY - and validation should fail if no subjectAltName matches. Otherwise, only if the subjectAltName list is empty, a list of CNs from the Subject field should be built, and perhaps sorted from most- to least-specific. A match should then proceed against this list, taking into account wildcards of course.

      Likewise, the HostnameVerifier implementation in not-yet-commons-ssl has the same issue. However, since not-yet-commons-ssl is a generic SSL/TLS transport library, it should not be made to follow HTTPS application layer rules for all TLS connections - instead a STRICT_HTTPS mode could be implemented for this purpose.

      For more information, see http://tools.ietf.org/search/rfc6125 (for future reference and background on where implementations are going) and http://tersesystems.com/2014/03/23/fixing-hostname-verification/

      Attachments

        Activity

          People

            coheigea Colm O hEigeartaigh
            chad_loder Chad Loder
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: