File decd3c6b9.patch of Package sblim-sfcb.18999

commit decd3c6b996ed5f10b5cb4ac1b23f37c36cd00cb
Author: Dave Heller <hellerda@us.ibm.com>
Date:   Sun Dec 21 14:26:53 2014 -0500

    [sfcb-tix:#110] Allow older SSL protocols to be disabled

BUG: bsc923349

diff --git a/control.c b/control.c
index ed0e5df..95ca246 100644
--- a/control.c
+++ b/control.c
@@ -175,6 +175,8 @@ static Control init[] = {
   {"sslCiphers", CTL_STRING, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH", {0}},
   {"sslDhParamsFilePath", CTL_STRING, NULL, {0}},
   {"sslEcDhCurveName", CTL_STRING, "secp224r1", {0}},
+  {"sslNoSSLv3", CTL_BOOL, NULL, {.b=0}},
+  {"sslNoTLSv1", CTL_BOOL, NULL, {.b=0}},
   {"enableSslCipherServerPref", CTL_BOOL, NULL, {.b=0}},
 
   {"registrationDir", CTL_STRING, SFCB_STATEDIR "/registration", {0}},
diff --git a/httpAdapter.c b/httpAdapter.c
index 2719e6c..67b6860 100644
--- a/httpAdapter.c
+++ b/httpAdapter.c
@@ -2039,7 +2039,7 @@ initSSL()
                  *fdhp,
                  *sslCiphers;
   int             rc,
-                  escsp;
+                  sslopt;
 
   if (ctx)
     SSL_CTX_free(ctx);
@@ -2087,14 +2087,21 @@ initSSL()
   /*
    * Set options
    */
-  SSL_CTX_set_options(ctx, SSL_OP_ALL | 
-                           SSL_OP_NO_SSLv2 |
-                           SSL_OP_SINGLE_DH_USE);
+  long options = SSL_OP_ALL | SSL_OP_SINGLE_DH_USE | SSL_OP_NO_SSLv2;
 
-  if (!getControlBool("enableSslCipherServerPref", &escsp) && escsp) {
+  if (!getControlBool("sslNoSSLv3", &sslopt) && sslopt)
+    options |= SSL_OP_NO_SSLv3;
+  if (!getControlBool("sslNoTLSv1", &sslopt) && sslopt)
+    options |= SSL_OP_NO_TLSv1;
+  _SFCB_TRACE(1, ("---  sslNoSSLv3=%s, sslNoTLSv1=%s",
+      (options & SSL_OP_NO_SSLv3 ? "true" : "false"),
+      (options & SSL_OP_NO_TLSv1 ? "true" : "false")));
+
+  if (!getControlBool("enableSslCipherServerPref", &sslopt) && sslopt) {
     _SFCB_TRACE(1, ("---  enableSslCipherServerPref = true"));
-    SSL_CTX_set_options(ctx, SSL_OP_CIPHER_SERVER_PREFERENCE);
+    options |= SSL_OP_CIPHER_SERVER_PREFERENCE;
   }
+  SSL_CTX_set_options(ctx, options);
 
   /*
    * Set valid ciphers
diff --git a/sfcb.cfg.pre.in b/sfcb.cfg.pre.in
index 77a2155..fdcfb2e 100644
--- a/sfcb.cfg.pre.in
+++ b/sfcb.cfg.pre.in
@@ -288,6 +288,13 @@ certificateAuthLib:   sfcCertificateAuthentication
 ##      weak ciphers.
 sslCiphers: ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH
 
+## When set to true, disable the indicated SSL/TLS protocol. This sets
+## the corresponding openssl option SSL_OP_NO_SSLv3 or SSL_OP_NO_TLSv1.
+## See man SSL_CTX_set_options(3) for details.
+## Default is false for both
+#sslNoSSLv3: false
+#sslNoTLSv1: false
+
 ## Optionally configure a DH parameters file for ephemeral key generation.
 ## See man SSL_CTX_set_tmp_dh_callback(3) for details. The value should be
 ## the full path to the file. Note that ephemeral key generation will still
openSUSE Build Service is sponsored by