[PATCH 1 of 2] SSL: provided "nginx" appname when loading OpenSSL configs
Maxim Dounin
mdounin at mdounin.ru
Wed Aug 2 18:17:00 UTC 2023
Hello!
On Wed, Aug 02, 2023 at 06:54:45PM +0300, Sergey Kandaurov wrote:
> > On 25 Jul 2023, at 02:10, Maxim Dounin <mdounin at mdounin.ru> wrote:
> >
> > # HG changeset patch
> > # User Maxim Dounin <mdounin at mdounin.ru>
> > # Date 1687300195 -10800
> > # Wed Jun 21 01:29:55 2023 +0300
> > # Node ID b79ef48b91e45dba4bf850be6b2a2cc3b8834f5d
> > # Parent 904c99bede1770d92566b56939c5b6ec85f05b55
> > SSL: provided "nginx" appname when loading OpenSSL configs.
> >
> > Following OpenSSL 0.9.8f, OpenSSL tries to load application-specific
> > configuration section first, and then falls back to the "openssl_conf"
> > default section if application-specific section is not found, by using
> > CONF_modules_load_file(CONF_MFLAGS_DEFAULT_SECTION). Therefore this
> > change is not expected to introduce any compatibility issues with existing
> > configurations. It does, however, makes it easier to configure specific
>
> typo: s/makes/make/
Fixed, thnx.
>
> > OpenSSL settings for nginx in system-wide OpenSSL configuration
> > (ticket #2449).
> >
> > Instead of checking OPENSSL_VERSION_NUMBER when using the OPENSSL_init_ssl()
> > interface, the code now tests for OPENSSL_INIT_LOAD_CONFIG to be defined and
> > true, and also explicitly excludes LibreSSL. This ensures that this interface
> > is not used with BoringSSL and LibreSSL, which do not provide additional
> > library initialization settings, notably the OPENSSL_INIT_set_config_appname()
> > call.
> >
> > diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
> > --- a/src/event/ngx_event_openssl.c
> > +++ b/src/event/ngx_event_openssl.c
> > @@ -140,13 +140,31 @@ int ngx_ssl_stapling_index;
> > ngx_int_t
> > ngx_ssl_init(ngx_log_t *log)
> > {
> > -#if OPENSSL_VERSION_NUMBER >= 0x10100003L
> > -
> > - if (OPENSSL_init_ssl(OPENSSL_INIT_LOAD_CONFIG, NULL) == 0) {
> > +#if (OPENSSL_INIT_LOAD_CONFIG && !defined LIBRESSL_VERSION_NUMBER)
> > +
> > + OPENSSL_INIT_SETTINGS *init;
> > +
> > + init = OPENSSL_INIT_new();
> > + if (init == NULL) {
> > + ngx_ssl_error(NGX_LOG_ALERT, log, 0, "OPENSSL_INIT_new() failed");
> > + return NGX_ERROR;
> > + }
> > +
> > +#ifndef OPENSSL_NO_STDIO
> > + if (OPENSSL_INIT_set_config_appname(init, "nginx") == 0) {
> > + ngx_ssl_error(NGX_LOG_ALERT, log, 0,
> > + "OPENSSL_INIT_set_config_appname() failed");
> > + return NGX_ERROR;
> > + }
> > +#endif
> > +
> > + if (OPENSSL_init_ssl(OPENSSL_INIT_LOAD_CONFIG, init) == 0) {
> > ngx_ssl_error(NGX_LOG_ALERT, log, 0, "OPENSSL_init_ssl() failed");
> > return NGX_ERROR;
> > }
> >
> > + OPENSSL_INIT_free(init);
> > +
> > /*
> > * OPENSSL_init_ssl() may leave errors in the error queue
> > * while returning success
> > @@ -156,7 +174,7 @@ ngx_ssl_init(ngx_log_t *log)
> >
> > #else
> >
> > - OPENSSL_config(NULL);
> > + OPENSSL_config("nginx");
> >
> > SSL_library_init();
> > SSL_load_error_strings();
>
> Looks good.
Pushed to http://mdounin.ru/hg/nginx, thanks.
--
Maxim Dounin
http://mdounin.ru/
More information about the nginx-devel
mailing list