[nginx] SSL: simplified ssl_password_file error handling.

Sergey Kandaurov pluknet at nginx.com
Thu Oct 30 14:39:28 UTC 2014


details:   http://hg.nginx.org/nginx/rev/42520df85ebb
branches:  
changeset: 5892:42520df85ebb
user:      Sergey Kandaurov <pluknet at nginx.com>
date:      Fri Oct 24 04:28:00 2014 -0700
description:
SSL: simplified ssl_password_file error handling.

Instead of collecting a number of the possible SSL_CTX_use_PrivateKey_file()
error codes that becomes more and more difficult with the rising variety of
OpenSSL versions and its derivatives, just continue with the next password.

Multiple passwords in a single ssl_password_file feature was broken after
recent OpenSSL changes (commit 4aac102f75b517bdb56b1bcfd0a856052d559f6e).

Affected OpenSSL releases: 0.9.8zc, 1.0.0o, 1.0.1j and 1.0.2-beta3.

Reported by Piotr Sikora.

diffstat:

 src/event/ngx_event_openssl.c |  17 +++--------------
 1 files changed, 3 insertions(+), 14 deletions(-)

diffs (27 lines):

diff -r 87ada3ba1392 -r 42520df85ebb src/event/ngx_event_openssl.c
--- a/src/event/ngx_event_openssl.c	Mon Oct 27 14:25:56 2014 -0700
+++ b/src/event/ngx_event_openssl.c	Fri Oct 24 04:28:00 2014 -0700
@@ -404,20 +404,9 @@ ngx_ssl_certificate(ngx_conf_t *cf, ngx_
         }
 
         if (--tries) {
-            n = ERR_peek_error();
-
-#ifdef OPENSSL_IS_BORINGSSL
-            if (ERR_GET_LIB(n) == ERR_LIB_CIPHER
-                && ERR_GET_REASON(n) == CIPHER_R_BAD_DECRYPT)
-#else
-            if (ERR_GET_LIB(n) == ERR_LIB_EVP
-                && ERR_GET_REASON(n) == EVP_R_BAD_DECRYPT)
-#endif
-            {
-                ERR_clear_error();
-                SSL_CTX_set_default_passwd_cb_userdata(ssl->ctx, ++pwd);
-                continue;
-            }
+            ERR_clear_error();
+            SSL_CTX_set_default_passwd_cb_userdata(ssl->ctx, ++pwd);
+            continue;
         }
 
         ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0,



More information about the nginx-devel mailing list