mod_ssl: ignore SNI hints unless required by config
This commit is contained in:
parent
9de9bf8dd6
commit
08bb147aa8
83
httpd-2.4.3-sslsninotreq.patch
Normal file
83
httpd-2.4.3-sslsninotreq.patch
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
diff --git a/modules/ssl/ssl_engine_config.c b/modules/ssl/ssl_engine_config.c
|
||||||
|
index 15993f1..53ed6f1 100644
|
||||||
|
--- a/modules/ssl/ssl_engine_config.c
|
||||||
|
+++ b/modules/ssl/ssl_engine_config.c
|
||||||
|
@@ -55,6 +55,7 @@ SSLModConfigRec *ssl_config_global_create(server_rec *s)
|
||||||
|
mc = (SSLModConfigRec *)apr_palloc(pool, sizeof(*mc));
|
||||||
|
mc->pPool = pool;
|
||||||
|
mc->bFixed = FALSE;
|
||||||
|
+ mc->sni_required = FALSE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* initialize per-module configuration
|
||||||
|
diff --git a/modules/ssl/ssl_engine_init.c b/modules/ssl/ssl_engine_init.c
|
||||||
|
index bf1f0e4..a7523de 100644
|
||||||
|
--- a/modules/ssl/ssl_engine_init.c
|
||||||
|
+++ b/modules/ssl/ssl_engine_init.c
|
||||||
|
@@ -409,7 +409,7 @@ int ssl_init_Module(apr_pool_t *p, apr_pool_t *plog,
|
||||||
|
/*
|
||||||
|
* Configuration consistency checks
|
||||||
|
*/
|
||||||
|
- ssl_init_CheckServers(base_server, ptemp);
|
||||||
|
+ ssl_init_CheckServers(mc, base_server, ptemp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Announce mod_ssl and SSL library in HTTP Server field
|
||||||
|
@@ -1475,7 +1475,7 @@ void ssl_init_ConfigureServer(server_rec *s,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-void ssl_init_CheckServers(server_rec *base_server, apr_pool_t *p)
|
||||||
|
+void ssl_init_CheckServers(SSLModConfigRec *mc, server_rec *base_server, apr_pool_t *p)
|
||||||
|
{
|
||||||
|
server_rec *s, *ps;
|
||||||
|
SSLSrvConfigRec *sc;
|
||||||
|
@@ -1557,6 +1557,7 @@ void ssl_init_CheckServers(server_rec *base_server, apr_pool_t *p)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (conflict) {
|
||||||
|
+ mc->sni_required = TRUE;
|
||||||
|
#ifdef OPENSSL_NO_TLSEXT
|
||||||
|
ap_log_error(APLOG_MARK, APLOG_WARNING, 0, base_server, APLOGNO(01917)
|
||||||
|
"Init: You should not use name-based "
|
||||||
|
diff --git a/modules/ssl/ssl_engine_kernel.c b/modules/ssl/ssl_engine_kernel.c
|
||||||
|
index bc9e26b..2460f01 100644
|
||||||
|
--- a/modules/ssl/ssl_engine_kernel.c
|
||||||
|
+++ b/modules/ssl/ssl_engine_kernel.c
|
||||||
|
@@ -164,6 +164,7 @@ int ssl_hook_ReadReq(request_rec *r)
|
||||||
|
return DECLINED;
|
||||||
|
}
|
||||||
|
#ifndef OPENSSL_NO_TLSEXT
|
||||||
|
+ if (myModConfig(r->server)->sni_required) {
|
||||||
|
if ((servername = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name))) {
|
||||||
|
char *host, *scope_id;
|
||||||
|
apr_port_t port;
|
||||||
|
@@ -206,6 +207,7 @@ int ssl_hook_ReadReq(request_rec *r)
|
||||||
|
" virtual host");
|
||||||
|
return HTTP_FORBIDDEN;
|
||||||
|
}
|
||||||
|
+ }
|
||||||
|
#endif
|
||||||
|
SSL_set_app_data2(ssl, r);
|
||||||
|
|
||||||
|
diff --git a/modules/ssl/ssl_private.h b/modules/ssl/ssl_private.h
|
||||||
|
index 75fc0e3..31dbfa9 100644
|
||||||
|
--- a/modules/ssl/ssl_private.h
|
||||||
|
+++ b/modules/ssl/ssl_private.h
|
||||||
|
@@ -554,6 +554,7 @@ typedef struct {
|
||||||
|
struct {
|
||||||
|
void *pV1, *pV2, *pV3, *pV4, *pV5, *pV6, *pV7, *pV8, *pV9, *pV10;
|
||||||
|
} rCtx;
|
||||||
|
+ BOOL sni_required;
|
||||||
|
} SSLModConfigRec;
|
||||||
|
|
||||||
|
/** Structure representing configured filenames for certs and keys for
|
||||||
|
@@ -786,7 +787,7 @@ const char *ssl_cmd_SSLFIPS(cmd_parms *cmd, void *dcfg, int flag);
|
||||||
|
int ssl_init_Module(apr_pool_t *, apr_pool_t *, apr_pool_t *, server_rec *);
|
||||||
|
void ssl_init_Engine(server_rec *, apr_pool_t *);
|
||||||
|
void ssl_init_ConfigureServer(server_rec *, apr_pool_t *, apr_pool_t *, SSLSrvConfigRec *);
|
||||||
|
-void ssl_init_CheckServers(server_rec *, apr_pool_t *);
|
||||||
|
+void ssl_init_CheckServers(SSLModConfigRec *mc, server_rec *, apr_pool_t *);
|
||||||
|
STACK_OF(X509_NAME)
|
||||||
|
*ssl_init_FindCAList(server_rec *, apr_pool_t *, const char *, const char *);
|
||||||
|
void ssl_init_Child(apr_pool_t *, server_rec *);
|
@ -61,6 +61,7 @@ Patch28: httpd-2.4.4-r1332643+.patch
|
|||||||
Patch29: httpd-2.4.3-mod_systemd.patch
|
Patch29: httpd-2.4.3-mod_systemd.patch
|
||||||
# Bug fixes
|
# Bug fixes
|
||||||
Patch50: httpd-2.4.2-r1374214+.patch
|
Patch50: httpd-2.4.2-r1374214+.patch
|
||||||
|
Patch51: httpd-2.4.3-sslsninotreq.patch
|
||||||
License: ASL 2.0
|
License: ASL 2.0
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||||
@ -182,6 +183,7 @@ interface for storing and accessing per-user session data.
|
|||||||
%patch29 -p1 -b .systemd
|
%patch29 -p1 -b .systemd
|
||||||
|
|
||||||
%patch50 -p1 -b .r1374214+
|
%patch50 -p1 -b .r1374214+
|
||||||
|
%patch51 -p1 -b .sninotreq
|
||||||
|
|
||||||
# Patch in the vendor string
|
# Patch in the vendor string
|
||||||
sed -i '/^#define PLATFORM/s/Unix/%{vstring}/' os/unix/os.h
|
sed -i '/^#define PLATFORM/s/Unix/%{vstring}/' os/unix/os.h
|
||||||
@ -606,6 +608,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%changelog
|
%changelog
|
||||||
* Thu Apr 18 2013 Jan Kaluza <jkaluza@redhat.com> - 2.4.4-5
|
* Thu Apr 18 2013 Jan Kaluza <jkaluza@redhat.com> - 2.4.4-5
|
||||||
- execute systemctl reload as result of apachectl graceful
|
- execute systemctl reload as result of apachectl graceful
|
||||||
|
- mod_ssl: ignore SNI hints unless required by config
|
||||||
|
|
||||||
* Tue Apr 16 2013 Jan Kaluza <jkaluza@redhat.com> - 2.4.4-4
|
* Tue Apr 16 2013 Jan Kaluza <jkaluza@redhat.com> - 2.4.4-4
|
||||||
- fix service file to not send SIGTERM after ExecStop (#906321, #912288)
|
- fix service file to not send SIGTERM after ExecStop (#906321, #912288)
|
||||||
|
Loading…
Reference in New Issue
Block a user