# 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](https://doc.eainfoport.cz/uploads/images/gallery/2024-05/scaled-1680-/image-1715936143328.png)](https://doc.eainfoport.cz/uploads/images/gallery/2024-05/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 ](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](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](https://www.npgsql.org/doc/security.html#encryption-ssltls))

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