Nastavení SSL komunikace pro připojení EAInfoportu a PostgreSQL databáze
Otázka
Jak nastavit SSL komunikaci pro připojení EAInforportu a PostgreSQL databázi?
Odpověď
Následující postup je ověřený na instalaci PostgreSQL 13 a Infoport 8.7.x
Podrobný popis nastavení databáze je uvedený přímo v aktuální dokumentaci https://www.postgresql.org/docs/current/ssl-tcp.html který doporučujeme pečlivě prostudovat. Navíc je na stránce https://methoddev.com/blog/postgresql-windows-encrypted-connection-ssl uveden step-by-step postup, jak konfiguraci provést prakticky.
Pro ověření, zda je komunikace zabezpečená je vhodné použít následující sql dotaz, který je možné v databázi spustit:
SELECT application_name, datname, usename, ssl, client_addr
FROM pg_stat_ssl
INNER JOIN pg_stat_activity ON pg_stat_ssl.pid = pg_stat_activity.pid;
Výsledek ukáže, jestli je daná session (konkrétní připojení aplikace - např. EAInfoport) zabezpečena pomocí ssl. Doporučujeme si toto ověřit, jak před začátkem jakýchkoliv změn v nastavení a následně po jejich dokončení.
Nastavení EAInfoportu se (prozatím - později bude součást Configuration Managera) provádí pomocí konfiguračního souboru appsettings.json. Zde je potřeba hodnotu "InfoportConnection_Npgsql" doplnit o ";ApplicationName=Infoport;SSL Mode=VerifyCA". Toto nastavení znamená, že EAInfoport bude vyžadovat ssl připojení do databáze, a bude kontrolovat, že existuje důvěryhodný certifikát.
Poznámka: pokud je db server nastaven tak, že ssl vyžaduje (=odmítá připojení bez ssl) ale v connection stringu EAInfoportu je nastaveno ";SSL Mode=Disable", zobrazí se v logu EAInfoportu hláška typu "28000: pg_hba.conf rejects connection for host "x.x.x.x", user "xx", database "xx", SSL off".
Verze EAInfoportu 7.x nebyla vyvíjena ani testována pro připojení pomocí ssl, ale je možné vyzkoušet následující:
Od verze 6 (.NETu - nikoliv databáze) jsou změněná varianty parametru pro ssl (viz též Security and Encryption | Npgsql Documentation)
Npgsql v6.0+:
- Disable
- Allow
- Prefer (default)
- Require
- VerifyCA
- VerifyFull
Npgsql pre-v6.0:
- Disable (default)
- Prefer
- Require
Pro vezi .NETu 2 (= pro EAInfoport 7.x) je možné jako parametr vyzkoušet ';SSL Mode=Prefer' a nebo ještě přidat, že certifikátu věřím, tzn. ";SSL Mode=Prefer;Trust Server Certificate=true"
Poslední varianta je vyměnit Prefer vymění za Require
No Comments