httpd-2.4.3-sslsninotreq.patch 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. diff --git a/modules/ssl/ssl_engine_config.c b/modules/ssl/ssl_engine_config.c
  2. index 15993f1..53ed6f1 100644
  3. --- a/modules/ssl/ssl_engine_config.c
  4. +++ b/modules/ssl/ssl_engine_config.c
  5. @@ -55,6 +55,7 @@ SSLModConfigRec *ssl_config_global_create(server_rec *s)
  6. mc = (SSLModConfigRec *)apr_palloc(pool, sizeof(*mc));
  7. mc->pPool = pool;
  8. mc->bFixed = FALSE;
  9. + mc->sni_required = FALSE;
  10. /*
  11. * initialize per-module configuration
  12. diff --git a/modules/ssl/ssl_engine_init.c b/modules/ssl/ssl_engine_init.c
  13. index bf1f0e4..a7523de 100644
  14. --- a/modules/ssl/ssl_engine_init.c
  15. +++ b/modules/ssl/ssl_engine_init.c
  16. @@ -409,7 +409,7 @@ int ssl_init_Module(apr_pool_t *p, apr_pool_t *plog,
  17. /*
  18. * Configuration consistency checks
  19. */
  20. - ssl_init_CheckServers(base_server, ptemp);
  21. + ssl_init_CheckServers(mc, base_server, ptemp);
  22. /*
  23. * Announce mod_ssl and SSL library in HTTP Server field
  24. @@ -1475,7 +1475,7 @@ void ssl_init_ConfigureServer(server_rec *s,
  25. }
  26. }
  27. -void ssl_init_CheckServers(server_rec *base_server, apr_pool_t *p)
  28. +void ssl_init_CheckServers(SSLModConfigRec *mc, server_rec *base_server, apr_pool_t *p)
  29. {
  30. server_rec *s, *ps;
  31. SSLSrvConfigRec *sc;
  32. @@ -1557,6 +1557,7 @@ void ssl_init_CheckServers(server_rec *base_server, apr_pool_t *p)
  33. }
  34. if (conflict) {
  35. + mc->sni_required = TRUE;
  36. #ifdef OPENSSL_NO_TLSEXT
  37. ap_log_error(APLOG_MARK, APLOG_WARNING, 0, base_server, APLOGNO(01917)
  38. "Init: You should not use name-based "
  39. diff --git a/modules/ssl/ssl_engine_kernel.c b/modules/ssl/ssl_engine_kernel.c
  40. index bc9e26b..2460f01 100644
  41. --- a/modules/ssl/ssl_engine_kernel.c
  42. +++ b/modules/ssl/ssl_engine_kernel.c
  43. @@ -164,6 +164,7 @@ int ssl_hook_ReadReq(request_rec *r)
  44. return DECLINED;
  45. }
  46. #ifndef OPENSSL_NO_TLSEXT
  47. + if (myModConfig(r->server)->sni_required) {
  48. if ((servername = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name))) {
  49. char *host, *scope_id;
  50. apr_port_t port;
  51. @@ -206,6 +207,7 @@ int ssl_hook_ReadReq(request_rec *r)
  52. " virtual host");
  53. return HTTP_FORBIDDEN;
  54. }
  55. + }
  56. #endif
  57. SSL_set_app_data2(ssl, r);
  58. diff --git a/modules/ssl/ssl_private.h b/modules/ssl/ssl_private.h
  59. index 75fc0e3..31dbfa9 100644
  60. --- a/modules/ssl/ssl_private.h
  61. +++ b/modules/ssl/ssl_private.h
  62. @@ -554,6 +554,7 @@ typedef struct {
  63. struct {
  64. void *pV1, *pV2, *pV3, *pV4, *pV5, *pV6, *pV7, *pV8, *pV9, *pV10;
  65. } rCtx;
  66. + BOOL sni_required;
  67. } SSLModConfigRec;
  68. /** Structure representing configured filenames for certs and keys for
  69. @@ -786,7 +787,7 @@ const char *ssl_cmd_SSLFIPS(cmd_parms *cmd, void *dcfg, int flag);
  70. int ssl_init_Module(apr_pool_t *, apr_pool_t *, apr_pool_t *, server_rec *);
  71. void ssl_init_Engine(server_rec *, apr_pool_t *);
  72. void ssl_init_ConfigureServer(server_rec *, apr_pool_t *, apr_pool_t *, SSLSrvConfigRec *);
  73. -void ssl_init_CheckServers(server_rec *, apr_pool_t *);
  74. +void ssl_init_CheckServers(SSLModConfigRec *mc, server_rec *, apr_pool_t *);
  75. STACK_OF(X509_NAME)
  76. *ssl_init_FindCAList(server_rec *, apr_pool_t *, const char *, const char *);
  77. void ssl_init_Child(apr_pool_t *, server_rec *);