Re: lippq client library and openssl initialization: PQinitOpenSSL()

From: Jeffrey Walton <noloader(at)gmail(dot)com>
To: Sebastien Flaesch <sebastien(dot)flaesch(at)4js(dot)com>
Cc: "pgsql-general(at)lists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: lippq client library and openssl initialization: PQinitOpenSSL()
Date: 2022-09-11 13:58:12
Message-ID: CAH8yC8=c45Vjko+YG9MWgVeLG11HR6nRd+TFt=UCkD8DLvK0aQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Sun, Sep 11, 2022 at 6:55 AM Sebastien Flaesch
<sebastien(dot)flaesch(at)4js(dot)com> wrote:
>
> The PostgreSQL doc says that if the application code is initializing OpenSSL, it should tell PostgreSQL libpq client library that OpenSSL initialization is already done:
>
> https://www.postgresql.org/docs/14/libpq-ssl.html#LIBPQ-SSL-INITIALIZE
>
> I was wondering if this is still true with OpenSSL 1.1.0+
>
> The APIs to initialize OpenSSL are OPENSSL_init_ssl() or OPENSSL_init_crypto().
>
> According to the OpenSSL doc, version 1.1.0 initializes itself automatically when calling other APIs ...
>
> https://www.openssl.org/docs/man1.1.1/man3/OPENSSL_init_ssl.html
>
> As of version 1.1.0 OpenSSL will automatically allocate all resources that it needs so no explicit initialisation is required. Similarly it will also automatically deinitialise as required.
>
> So, is a call to PQinitOpenSSL(0, 0) still needed?
>
> I did some test with our application, and I could establish a TLS/SSL connection using server and client certificates.
>
> What can go wrong in fact?
>
> Can someone give me a hint, so I can prove that we really need to call PQinitOpenSSL(0,0)?
>
> Note: Our application is for now single-threaded.
>
> OpenSSL doc also states:
>
> However, there may be situations when explicit initialisation is desirable or needed, for example when some nondefault initialisation is required.
>
> If our application would requires nondefault initialization, I assume that PostgreSQL openssl usage will implicitly inherit the OpenSSL seetings of our application, right?
>
> Can this be an issue for PostgreSQL, or can both just share the same OpenSSL settings/config?

For the OpenSSL side of things, then see
https://wiki.openssl.org/index.php/Library_Initialization .

Jeff

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2022-09-11 15:08:00 Re: lippq client library and openssl initialization: PQinitOpenSSL()
Previous Message Sebastien Flaesch 2022-09-11 10:55:39 lippq client library and openssl initialization: PQinitOpenSSL()