-
-
Notifications
You must be signed in to change notification settings - Fork 34.2k
Description
Problem
When OPENSSL_CONF environment variable is set, config files are loaded twice.
Reason
InitCryptoOnce function in node_crypto.cc first calls SSL_load_error_strings() which is a macro for OPENSSL_init_ssl() which in turn will at some point will call CONF_modules_load_file() for the file pointed to by OPENSSL_CONF environment variable. Then in the same function (InitCryptoOnce()) CONF_modules_load_file() will be called again for the file pointed to by openssl_config command line option.
But upon nodejs initialization, if openssl_config is not given, and if OPENSSL_CONF is set, openssl_config is set to the value in OPENSSL_CONF. As a result CONF_modules_load_file() will be called twice.
Impact
Normally none, except for cases when the config is not idempotent, as is the case e.g. when dynamic engines need to be loaded. In which case it is also not a huge deal, but the user will see a scary error message:
openssl config failed: error:26078067:engine routines:engine_list_add:conflicting engine id
Not sure what would be the best fix, probably it's also not too urgent.