Hello,

"Dr. Stephen Henson" <st...@openssl.org> wrote:
 |On Thu, Dec 04, 2014, Tomas Hoger wrote:
 |> On Wed, 3 Dec 2014 22:55:06 +0100 Kurt Roeckx wrote:
 |> Maybe applications may benefit from an API where they can pass string
 |> set by the end user and let OpenSSL parse version number from that.
 |> If mod_ssl had configuration directives as SSLProtocolMin and
 |> SSLProtocolMax, it could e.g. use the following while used with OpenSSL
 |> 1.0.0:

 |> 

 |This can already be done in the SSL_CONF API for OpenSSL 1.0.2+. Apache
 |httpd (and hopefully other applicacations at some point) includes support
 |so we'd just need to add a new command value.

Until now programs use SSL_CTX_set_options() to perform necessary
adjustments.  And as far as i know OpenSSL doesn't support a way
to extend the following from my thing so that i could offer users
the possibility to say "newest", e.g.,
a SSL_OP_NO_NOTHING_BUT_NEWEST:

     {"auto", SSL_OP_NO_SSLv2},
  #ifndef OPENSSL_NO_TLS1
  # ifdef TLS1_2_VERSION
     {"tls1.2", SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1 |
        SSL_OP_NO_SSLv3 | SSL_OP_NO_SSLv2},
  # endif
  # ifdef TLS1_1_VERSION
     {"tls1.1", SSL_OP_NO_TLSv1 | SSL_OP_NO_SSLv3 | SSL_OP_NO_SSLv2},
  # endif
     {"tls1", SSL_OP_NO_SSLv3 | SSL_OP_NO_SSLv2},
  #endif
  #ifndef OPENSSL_NO_SSL3
     {"ssl3", SSL_OP_NO_SSLv2},
  #endif
  #ifndef OPENSSL_NO_SSL2
     {"ssl2", 0},
  #endif

so that they only would need to update their OpenSSL library
and restart the application in order to automatically restrict
themselve to the newest protocol only?
Btw. i just recently changed this table from

   static struct ssl_method const   _ssl_methods[] = {
  -   {"auto", &SSLv23_client_method},
  -#define _SSL_DEFAULT_METHOD      SSLv23_client_method
  +   {"auto", SSL_OP_NO_SSLv2},
   #ifndef OPENSSL_NO_TLS1
   # ifdef TLS1_2_VERSION
  -   {"tls1.2", &TLSv1_2_client_method},
  +   {"tls1.2", SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1 |
  +      SSL_OP_NO_SSLv3 | SSL_OP_NO_SSLv2},
   # endif
   # ifdef TLS1_1_VERSION
  -   {"tls1.1", &TLSv1_1_client_method},
  +   {"tls1.1", SSL_OP_NO_TLSv1 | SSL_OP_NO_SSLv3 | SSL_OP_NO_SSLv2},
   # endif
  -   {"tls1", &TLSv1_client_method},
  +   {"tls1", SSL_OP_NO_SSLv3 | SSL_OP_NO_SSLv2},
   #endif
   #ifndef OPENSSL_NO_SSL3
  -   {"ssl3", &SSLv3_client_method},
  +   {"ssl3", SSL_OP_NO_SSLv2},
   #endif
   #ifndef OPENSSL_NO_SSL2
  -   {"ssl2", &SSLv2_client_method}
  +   {"ssl2", 0},
   #endif
   };

which i think changed its semantics, so great that something in
this area happens.  But a dynamic approach would be really great
(like also, say, only the newest or the one before that but only
if that has no known security traps in the meanwhile, naively
spoken).

(Btw., i hope that TLS v1.2 is still secure, Google disclassifies
applications which connect via this protocol so that "lesssecure"
has to be chosen from their web interface.)

Thanks a lot again, and ciao from Germany,

--steffen
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to