Index: support/ab.c
===================================================================
--- support/ab.c	(revision 123012)
+++ support/ab.c	(working copy)
@@ -1845,6 +1845,9 @@
     fprintf(stderr, "    -e filename     Output CSV file with percentages served\n");
 #ifdef USE_SSL
     fprintf(stderr, "    -s              Use httpS instead of HTTP (SSL)\n");
+    fprintf(stderr, "    -m version      SSL version is (SSLv2|SSLv3|TLSv1)\n");
+    fprintf(stderr, "                    If not specified, use highest available.\n");
+    fprintf(stderr, "                    Use this option together with -s. \n");
 #endif
     fprintf(stderr, "    -h              Display usage information (this message)\n");
     exit(EINVAL);
@@ -1977,6 +1980,9 @@
     apr_getopt_t *opt;
     const char *optarg;
     char c;
+#ifdef USE_SSL
+    SSL_METHOD *ssl_method = NULL;
+#endif
 
     /* table defaults  */
     tablestring = "";
@@ -2012,18 +2018,30 @@
     apr_getopt_init(&opt, cntxt, argc, argv);
     while ((status = apr_getopt(opt, "n:c:t:T:p:v:kVhwix:y:z:C:H:P:A:g:X:de:Sq"
 #ifdef USE_SSL
-            "s"
+            "sm:"
 #endif
             ,&c, &optarg)) == APR_SUCCESS) {
         switch (c) {
-            case 's':
 #ifdef USE_SSL
+            case 's:':
                 ssl = 1;
+                if (ssl_method == NULL) {
+                    ssl_method = SSLv23_client_method();
+                }
                 break;
-#else
-                fprintf(stderr, "SSL not compiled in; no https support\n");
-                exit(1);
-#endif
+        case 'm':
+                if (!apr_strnatcmp(optarg, "SSLv2")) {
+                    ssl_method = SSLv2_client_method();
+                } else if (!apr_strnatcmp(optarg, "SSLv3")) {
+                    ssl_method = SSLv3_client_method();
+                } else if (!apr_strnatcmp(optarg, "TLSv1")) {
+                    ssl_method = TLSv1_client_method();
+                } else {
+                    fprintf(stderr, "SSL method %s not supported. Defaulting to highest "
+                            "supported version.\n", optarg);
+                    ssl_method = SSLv23_client_method();
+                }
+                break;
             case 'n':
                 requests = atoi(optarg);
                 if (!requests) {
@@ -2193,8 +2211,7 @@
     bio_out=BIO_new_fp(stdout,BIO_NOCLOSE);
     bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
 
-    /* TODO: Allow force SSLv2_client_method() (TLSv1?) */
-    if (!(ctx = SSL_CTX_new(SSLv23_client_method()))) {
+    if (!(ctx = SSL_CTX_new(ssl_method))) {
         fprintf(stderr, "Could not init SSL CTX");
         ERR_print_errors_fp(stderr);
         exit(1);
Index: docs/manual/programs/ab.xml
===================================================================
--- docs/manual/programs/ab.xml	(revision 123012)
+++ docs/manual/programs/ab.xml	(working copy)
@@ -50,6 +50,7 @@
     [ -<strong>P</strong> <var>proxy-auth-username</var>:<var>password</var> ]
     [ -<strong>q</strong> ]
     [ -<strong>s</strong> ]
+    [ -<strong>m</strong> <var>version</var> ]
     [ -<strong>S</strong> ]
     [ -<strong>t</strong> <var>timelimit</var> ]
     [ -<strong>T</strong> <var>content-type</var> ]
@@ -137,6 +138,12 @@
     This feature is experimental and <em>very</em> rudimentary. You probably
     do not want to use it.</dd>
 
+    <dt><code>-m <var>version</var></code></dt>
+    <dd>The version parameter can be
+    <code>(SSLv2|SSLv3|TLSv1)</code>. To be used together with
+    <strong>-s</strong>. When not specified, use highest available
+    version.</dd>
+
     <dt><code>-S</code></dt>
     <dd>Do not display the median and standard deviation values, nor display
     the warning/error messages when the average and median are more than
