diff --git a/modules/ssl/mod_ssl.c b/modules/ssl/mod_ssl.c index 37947e7..b50c259 100644 --- a/modules/ssl/mod_ssl.c +++ b/modules/ssl/mod_ssl.c @@ -331,9 +331,6 @@ static apr_status_t ssl_cleanup_pre_config(void *data) /* * Try to kill the internals of the SSL library. */ -#ifdef HAVE_FIPS - FIPS_mode_set(0); -#endif /* Corresponds to OBJ_create()s */ OBJ_cleanup(); /* Corresponds to OPENSSL_load_builtin_modules() */ diff --git a/modules/ssl/ssl_engine_init.c b/modules/ssl/ssl_engine_init.c index 5063a72..21e41e2 100644 --- a/modules/ssl/ssl_engine_init.c +++ b/modules/ssl/ssl_engine_init.c @@ -183,6 +183,14 @@ int ssl_is_challenge(conn_rec *c, const char *servername, return 0; } +#ifdef HAVE_FIPS +static apr_status_t ssl_fips_cleanup(void *data) +{ + FIPS_mode_set(0); + return APR_SUCCESS; +} +#endif + /* * Per-module initialization */ @@ -316,6 +324,8 @@ apr_status_t ssl_init_Module(apr_pool_t *p, apr_pool_t *plog, if (FIPS_mode_set(1)) { ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s, APLOGNO(01884) "Operating in SSL FIPS mode"); + apr_pool_cleanup_register(p, NULL, ssl_fips_cleanup, + apr_pool_cleanup_null); } else { ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s, APLOGNO(01885) "FIPS mode failed");