Skip to main content

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?

image-1715936143328.png

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