> There are just a handful of useful patches in STATUS lacking
> a single vote for inclusion in 2.2.9...

While not completely true for the SNI backport proposal (requires more
than a single additional vote), I'd nevertheless like to draw the
attention to that patch.

Looking at the current votes, I think that the -1 no longer applies,
actually (it was added in December '07, before the code was reworked
considerably):

>       Backport version for 2.2.x of updated patch:
>          http://people.apache.org/~fuankg/diffs/httpd-2.2.x-sni.diff
>       +1: fuankg
>       +0: like ssl upgrade of 2.2, perhaps this is a good reason to bring
>           httpd-2.4 to completion?  vhost changes could be disruptive to
>           third party module authors.
>       -1: rpluem: jorton found some problems with the trunk version and they
>                   should be fixed / discussed in trunk before we backport.

The last issue reported by Joe in April
(http://mail-archives.apache.org/mod_mbox/httpd-dev/200804.mbox/[EMAIL 
PROTECTED])
can be addressed by the attached patch, if deemed appropriate [1]. All
other problems observed previously are already included in the backport
version.

So, is there still hope for SNI being added in 2.2.9...? Let me know if
there's anything else I can do to increase the chances of getting this
proposal accepted.

Thanks,
Kaspar

[1] The problem is already present in the current 2.2.x branch (it's not
introduced by the SNI patch, in particular): when setting up more than
one SSL-enabled VirtualHost (e.g. by using a wildcard certificate, or a
cert with several subjectAltName entries), only the per-vhost
SSLVerifyClient/SSLVerifyDepth statements set for the *first* vhost are
ever considered.

Index: modules/ssl/ssl_engine_kernel.c
===================================================================
--- modules/ssl/ssl_engine_kernel.c     (revision 653796)
+++ modules/ssl/ssl_engine_kernel.c     (working copy)
@@ -427,16 +427,21 @@ int ssl_hook_Access(request_rec *r)
      * function and not by OpenSSL internally (and our function is aware of
      * both the per-server and per-directory contexts). So we cannot ask
      * OpenSSL about the currently verify depth. Instead we remember it in our
      * ap_ctx attached to the SSL* of OpenSSL.  We've to force the
      * renegotiation if the reconfigured/new verify depth is less than the
      * currently active/remembered verify depth (because this means more
      * restriction on the certificate chain).
      */
+    if ((sc->server->auth.verify_depth != UNSET) &&
+        (dc->nVerifyDepth == UNSET)) {
+        /* apply per-vhost setting, if per-directory config is not set */
+        dc->nVerifyDepth = sc->server->auth.verify_depth;
+    }
     if (dc->nVerifyDepth != UNSET) {
         /* XXX: doesnt look like sslconn->verify_depth is actually used */
         if (!(n = sslconn->verify_depth)) {
             sslconn->verify_depth = n = sc->server->auth.verify_depth;
         }
 
         /* determine whether a renegotiation has to be forced */
         if (dc->nVerifyDepth < n) {
@@ -456,16 +461,21 @@ int ssl_hook_Access(request_rec *r)
      * The order is: none << optional_no_ca << optional << require
      *
      * Additionally the following optimization is possible here: When the
      * currently active verify type is "none" but a client certificate is
      * already known/present, it's enough to manually force a client
      * verification but at least skip the I/O-intensive renegotation
      * handshake.
      */
+    if ((sc->server->auth.verify_mode != SSL_CVERIFY_UNSET) &&
+        (dc->nVerifyClient == SSL_CVERIFY_UNSET)) {
+        /* apply per-vhost setting, if per-directory config is not set */
+        dc->nVerifyClient = sc->server->auth.verify_mode;
+    }
     if (dc->nVerifyClient != SSL_CVERIFY_UNSET) {
         /* remember old state */
         verify_old = SSL_get_verify_mode(ssl);
         /* configure new state */
         verify = SSL_VERIFY_NONE;
 
         if (dc->nVerifyClient == SSL_CVERIFY_REQUIRE) {
             verify |= SSL_VERIFY_PEER_STRICT;



Reply via email to