summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2016-03-31 23:38:33 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2016-03-31 23:38:33 +0300
commite6f04424affb4c16db9d9c65487ed47459abba7f (patch)
treef88d6bd1e96dd17c25050c656ab3103a5b2ff398
parent93c2749fae7c9516c7dde73543df0ca93cba92b4 (diff)
downloadnginx-e6f04424affb4c16db9d9c65487ed47459abba7f.tar.gz
SSL: initialization changes for OpenSSL 1.1.0.
OPENSSL_config() deprecated in OpenSSL 1.1.0. Additionally, SSL_library_init(), SSL_load_error_strings() and OpenSSL_add_all_algorithms() are no longer available if OPENSSL_API_COMPAT is set to 0x10100000L. The OPENSSL_init_ssl() function is now used instead with appropriate arguments to trigger the same behaviour. The configure test changed to use SSL_CTX_set_options(). Deinitialization now happens automatically in OPENSSL_cleanup() called via atexit(3), so we no longer call EVP_cleanup() and ENGINE_cleanup() directly.
-rw-r--r--auto/lib/openssl/conf2
-rw-r--r--src/event/ngx_event_openssl.c12
2 files changed, 13 insertions, 1 deletions
diff --git a/auto/lib/openssl/conf b/auto/lib/openssl/conf
index e438050e8..39d960237 100644
--- a/auto/lib/openssl/conf
+++ b/auto/lib/openssl/conf
@@ -52,7 +52,7 @@ else
ngx_feature_incs="#include <openssl/ssl.h>"
ngx_feature_path=
ngx_feature_libs="-lssl -lcrypto $NGX_LIBDL"
- ngx_feature_test="SSL_library_init()"
+ ngx_feature_test="SSL_CTX_set_options(NULL, 0)"
. auto/feature
if [ $ngx_found = no ]; then
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index 21c305f91..9f3cc86a0 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -111,6 +111,12 @@ int ngx_ssl_stapling_index;
ngx_int_t
ngx_ssl_init(ngx_log_t *log)
{
+#if OPENSSL_VERSION_NUMBER >= 0x10100003L
+
+ OPENSSL_init_ssl(OPENSSL_INIT_LOAD_CONFIG, NULL);
+
+#else
+
#ifndef OPENSSL_IS_BORINGSSL
OPENSSL_config(NULL);
#endif
@@ -120,6 +126,8 @@ ngx_ssl_init(ngx_log_t *log)
OpenSSL_add_all_algorithms();
+#endif
+
#if OPENSSL_VERSION_NUMBER >= 0x0090800fL
#ifndef SSL_OP_NO_COMPRESSION
{
@@ -3548,8 +3556,12 @@ ngx_openssl_engine(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
static void
ngx_openssl_exit(ngx_cycle_t *cycle)
{
+#if OPENSSL_VERSION_NUMBER < 0x10100003L
+
EVP_cleanup();
#ifndef OPENSSL_NO_ENGINE
ENGINE_cleanup();
#endif
+
+#endif
}