lippq client library and openssl initialization: PQinitOpenSSL()

From: Sebastien Flaesch <sebastien(dot)flaesch(at)4js(dot)com>
To: "pgsql-general(at)lists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: lippq client library and openssl initialization: PQinitOpenSSL()
Date: 2022-09-11 10:55:39
Message-ID: DBAP191MB12895BFFEC4B5FE0460D0F2FB0459@DBAP191MB1289.EURP191.PROD.OUTLOOK.COM
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hello!

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?

Thanks!
Seb

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jeffrey Walton 2022-09-11 13:58:12 Re: lippq client library and openssl initialization: PQinitOpenSSL()
Previous Message yanliang lei 2022-09-11 09:40:58 how to check specific user_name have “SELECT ON ALL TABLES IN SCHEMA <tableschema>” privilege or not ?