1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-08 15:02:10 +03:00

mod_ssl, ab: Support OpenSSL compiled without SSLv2 support

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1090367 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Stefan Fritsch
2011-04-08 17:56:20 +00:00
parent 53b7c75196
commit ded32d4e37
5 changed files with 26 additions and 6 deletions

View File

@@ -2,6 +2,9 @@
Changes with Apache 2.3.12 Changes with Apache 2.3.12
*) mod_ssl, ab: Support OpenSSL compiled without SSLv2 support.
[Stefan Fritsch]
*) core: Abort if the MPM is changed across restart. [Jeff Trawick] *) core: Abort if the MPM is changed across restart. [Jeff Trawick]
*) mod_proxy_ajp: Add support for 'ProxyErrorOverride on'. PR 50945. *) mod_proxy_ajp: Add support for 'ProxyErrorOverride on'. PR 50945.

View File

@@ -1208,6 +1208,11 @@ static const char *ssl_cmd_protocol_parse(cmd_parms *parms,
} }
if (strcEQ(w, "SSLv2")) { if (strcEQ(w, "SSLv2")) {
#ifdef OPENSSL_NO_SSL2
if (action != '-') {
return "SSLv2 not supported by this version of OpenSSL";
}
#endif
thisopt = SSL_PROTOCOL_SSLV2; thisopt = SSL_PROTOCOL_SSLV2;
} }
else if (strcEQ(w, "SSLv3")) { else if (strcEQ(w, "SSLv3")) {

View File

@@ -500,16 +500,18 @@ static void ssl_init_ctx_protocol(server_rec *s,
ap_log_error(APLOG_MARK, APLOG_TRACE3, 0, s, ap_log_error(APLOG_MARK, APLOG_TRACE3, 0, s,
"Creating new SSL context (protocols: %s)", cp); "Creating new SSL context (protocols: %s)", cp);
if (protocol == SSL_PROTOCOL_SSLV2) { if (protocol == SSL_PROTOCOL_SSLV3) {
method = mctx->pkp ?
SSLv2_client_method() : /* proxy */
SSLv2_server_method(); /* server */
}
else if (protocol == SSL_PROTOCOL_SSLV3) {
method = mctx->pkp ? method = mctx->pkp ?
SSLv3_client_method() : /* proxy */ SSLv3_client_method() : /* proxy */
SSLv3_server_method(); /* server */ SSLv3_server_method(); /* server */
} }
#ifndef OPENSSL_NO_SSL2
else if (protocol == SSL_PROTOCOL_SSLV2) {
method = mctx->pkp ?
SSLv2_client_method() : /* proxy */
SSLv2_server_method(); /* server */
}
#endif
else if (protocol == SSL_PROTOCOL_TLSV1) { else if (protocol == SSL_PROTOCOL_TLSV1) {
method = mctx->pkp ? method = mctx->pkp ?
TLSv1_client_method() : /* proxy */ TLSv1_client_method() : /* proxy */

View File

@@ -236,7 +236,11 @@ typedef int ssl_opt_t;
#define SSL_PROTOCOL_SSLV2 (1<<0) #define SSL_PROTOCOL_SSLV2 (1<<0)
#define SSL_PROTOCOL_SSLV3 (1<<1) #define SSL_PROTOCOL_SSLV3 (1<<1)
#define SSL_PROTOCOL_TLSV1 (1<<2) #define SSL_PROTOCOL_TLSV1 (1<<2)
#ifndef OPENSSL_NO_SSL2
#define SSL_PROTOCOL_ALL (SSL_PROTOCOL_SSLV2|SSL_PROTOCOL_SSLV3|SSL_PROTOCOL_TLSV1) #define SSL_PROTOCOL_ALL (SSL_PROTOCOL_SSLV2|SSL_PROTOCOL_SSLV3|SSL_PROTOCOL_TLSV1)
#else
#define SSL_PROTOCOL_ALL (SSL_PROTOCOL_SSLV3|SSL_PROTOCOL_TLSV1)
#endif
typedef int ssl_proto_t; typedef int ssl_proto_t;
/** /**

View File

@@ -1890,7 +1890,11 @@ static void usage(const char *progname)
fprintf(stderr, " -h Display usage information (this message)\n"); fprintf(stderr, " -h Display usage information (this message)\n");
#ifdef USE_SSL #ifdef USE_SSL
fprintf(stderr, " -Z ciphersuite Specify SSL/TLS cipher suite (See openssl ciphers)\n"); fprintf(stderr, " -Z ciphersuite Specify SSL/TLS cipher suite (See openssl ciphers)\n");
#ifndef OPENSSL_NO_SSL2
fprintf(stderr, " -f protocol Specify SSL/TLS protocol (SSL2, SSL3, TLS1, or ALL)\n"); fprintf(stderr, " -f protocol Specify SSL/TLS protocol (SSL2, SSL3, TLS1, or ALL)\n");
#else
fprintf(stderr, " -f protocol Specify SSL/TLS protocol (SSL3, TLS1, or ALL)\n");
#endif
#endif #endif
exit(EINVAL); exit(EINVAL);
} }
@@ -2219,8 +2223,10 @@ int main(int argc, const char * const argv[])
case 'f': case 'f':
if (strncasecmp(opt_arg, "ALL", 3) == 0) { if (strncasecmp(opt_arg, "ALL", 3) == 0) {
meth = SSLv23_client_method(); meth = SSLv23_client_method();
#ifndef OPENSSL_NO_SSL2
} else if (strncasecmp(opt_arg, "SSL2", 4) == 0) { } else if (strncasecmp(opt_arg, "SSL2", 4) == 0) {
meth = SSLv2_client_method(); meth = SSLv2_client_method();
#endif
} else if (strncasecmp(opt_arg, "SSL3", 4) == 0) { } else if (strncasecmp(opt_arg, "SSL3", 4) == 0) {
meth = SSLv3_client_method(); meth = SSLv3_client_method();
} else if (strncasecmp(opt_arg, "TLS1", 4) == 0) { } else if (strncasecmp(opt_arg, "TLS1", 4) == 0) {