Megosztás a következőn keresztül:


Biztonságos kapcsolat a TLS-lel az Azure Database for PostgreSQL-ben

Az Azure Database for PostgreSQL kényszeríti az ügyfélalkalmazások csatlakoztatását egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz a Transport Layer Security (TLS) használatával. A TLS egy iparági szabvány protokoll, amely titkosított hálózati kapcsolatokat biztosít az adatbázis-kiszolgáló és az ügyfélalkalmazások között. A TLS a Secure Sockets Layer (SSL) frissített protokollja. Az SSL és a TLS kifejezések továbbra is felcserélhetők.

Fontos

2025. november 11-től a következő listában szereplő Azure-régiókat új köztes hitelesítésszolgáltatói tanúsítványokat használó TLS-/SSL-tanúsítványváltásra tervezik.

  • USA nyugati középső régiója
  • Kelet-Ázsia
  • Egyesült Királyság déli régiója

2026. január 19-től ez a rotáció az összes fennmaradó Azure-régióra kiterjed, beleértve az Azure Governmentt és az összes többi régiót is.

A hibaelhárítással kapcsolatos információkért tekintse meg a tanúsítvány rögzítésével kapcsolatos problémákat.

Tanúsítványláncok

A tanúsítványlánc a TLS/SSL-tanúsítványt és CA-tanúsítványokat tartalmazó tanúsítványok rendezett listája. Lehetővé teszik a fogadó számára, hogy ellenőrizze, hogy a feladó és az összes hitelesítésszolgáltató megbízható-e. A lánc vagy elérési út a TLS/SSL-tanúsítvánnyal kezdődik. A lánc minden tanúsítványát a lánc következő tanúsítványa által azonosított entitás írja alá.

A lánc egy legfelső szintű hitelesítésszolgáltatói tanúsítvánnyal végződik. Ezt a tanúsítványt mindig maga a hitelesítésszolgáltató írja alá. A lánc összes tanúsítványának aláírását a legfelső szintű hitelesítésszolgáltatói tanúsítványig ellenőrizni kell.

A TLS/SSL-tanúsítvány és a láncban lévő legfelső szintű hitelesítésszolgáltatói tanúsítvány között található tanúsítványokat köztes tanúsítványnak nevezzük.

TLS-verziók

Világszerte számos kormányzati entitás tart fenn irányelveket a TLS-hez a hálózatbiztonsággal kapcsolatban. Az Egyesült Államokban ezek a szervezetek közé tartozik az Egészségügyi és Humán Szolgáltatások Minisztériuma, valamint a Nemzeti Szabványügyi és Technológiai Intézet. A TLS által biztosított biztonsági szintet leginkább a TLS protokoll verziója és a támogatott titkosítási csomagok befolyásolják.

A titkosítási csomag olyan algoritmusok készlete, amelyek tartalmazzák a titkosítást, a kulcscserélő algoritmust és a kivonatoló algoritmust. Ezek együttes használatával biztonságos TLS-kapcsolatot hozhat létre. A legtöbb TLS-ügyfél és -kiszolgáló több alternatívát is támogat. Egyeztetniük kell, amikor biztonságos kapcsolatot létesítenek egy közös TLS-verzió és titkosítási csomag kiválasztásához.

Az Azure Database for PostgreSQL támogatja a TLS 1.2-es és újabb verzióját. Az RFC 8996-ban az Internet Engineering Task Force (IETF) kifejezetten kimondja, hogy a TLS 1.0 és a TLS 1.1 nem használható. 2019 végéig mindkét protokoll elavult.

A TLS protokoll korábbi verzióit ( például TLS 1.0 és TLS 1.1) használó bejövő kapcsolatok alapértelmezés szerint le vannak tagadva.

Az IETF 2018 augusztusában adta ki a TLS 1.3 specifikációt az RFC 8446-ban, és a TLS 1.3 jelenleg a leggyakrabban használt és ajánlott TLS-verzió. A TLS 1.3 gyorsabb és biztonságosabb, mint a TLS 1.2.

Megjegyzés:

Az SSL- és TLS-tanúsítványok tanúsítják, hogy a kapcsolat a legkorszerűbb titkosítási protokollokkal van biztosítva. A vezetéken lévő kapcsolat titkosításával megakadályozza az adatokhoz való jogosulatlan hozzáférést átvitel közben. Határozottan javasoljuk, hogy a TLS legújabb verzióival titkosítsa a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányokkal létesített kapcsolatokat.

Bár nem javasoljuk, ha szükséges, letilthatja a TLS\SSL-t a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz való kapcsolatokhoz. A kiszolgálóparamétert frissítheti a require_secure_transport következőre OFF: . A TLS-verziót a kiszolgáló paramétereinek beállításával ssl_min_protocol_versionssl_max_protocol_version is beállíthatja.

A tanúsítványhitelesítés ssl-ügyféltanúsítványok használatával történik a hitelesítéshez. Ebben a forgatókönyvben a PostgreSQL-kiszolgáló összehasonlítja a kért adatbázis-felhasználóval bemutatott ügyféltanúsítvány köznapi (CN) attribútumát.

Az Azure Database for PostgreSQL jelenleg nem támogatja a következőt:

Megjegyzés:

A Microsoft alapvető ca-módosításokat hajtott végre a különböző Azure-szolgáltatásokhoz, például az Azure Database for PostgreSQL-hez. További információkért tekintse meg az Azure TLS-tanúsítvány módosításait és az SSL konfigurálása az ügyfélen című szakaszt.

Az aktuális TLS\SSL-kapcsolat állapotának meghatározásához töltse be a sslinfo bővítményt , majd hívja meg a függvényt annak ssl_is_used() megállapításához, hogy használ-e SSL-t. A függvény akkor ad t vissza, ha a kapcsolat SSL-t használ. Ellenkező esetben a visszaadott férték. A rugalmas Azure Database for PostgreSQL-kiszolgálópéldány SSL-használatára vonatkozó összes információt folyamat, ügyfél és alkalmazás szerint is összegyűjtheti az alábbi lekérdezéssel:

SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type
   FROM pg_stat_ssl
   JOIN pg_stat_activity
   ON pg_stat_ssl.pid = pg_stat_activity.pid
   ORDER BY ssl;

A teszteléshez közvetlenül is használhatja a openssl parancsot:

openssl s_client -starttls postgres -showcerts -connect <your-postgresql-server-name>:5432

Ez a parancs alacsony szintű protokolladatokat nyomtat ki, például a TLS-verziót és a titkosítást. Ezt a lehetőséget -starttls postgreskell használnia. Ellenkező esetben ez a parancs azt jelenti, hogy nincs SSL használatban. A parancs használatához legalább az OpenSSL 1.1.1 szükséges.

Az ügyfél és egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldány közötti kapcsolatvédelem legújabb, legbiztonságosabb TLS-verziójának kényszerítéséhez állítsa be a következőt ssl_min_protocol_version1.3: . Ehhez a beállításhoz a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz csatlakozó ügyfeleknek csak a protokoll ezen verzióját kell használniuk a biztonságos kommunikációhoz. Előfordulhat, hogy a régebbi ügyfelek nem tudnak kommunikálni a kiszolgálóval, mert nem támogatják ezt a verziót.

SSL konfigurálása az ügyfélen

Alapértelmezés szerint a PostgreSQL nem végzi el a kiszolgálótanúsítvány ellenőrzését. Emiatt a kiszolgálóidentitást (például egy DNS-rekord módosításával vagy a kiszolgáló IP-címének átvételével) az ügyfél tudta nélkül is meg lehet hamisíteni. Minden SSL-beállítás a terhelést titkosítás és kulcscsere formájában hordozzák, így a teljesítmény és a biztonság közötti kompromisszum jön létre.

A hamisítás megakadályozása érdekében SSL-tanúsítvány-ellenőrzést kell használni az ügyfélen.

Az ügyfél SSL-hez való konfigurálásához számos kapcsolati paraméter létezik. Néhány fontos:

  • ssl: Csatlakozás SSL használatával. Ennek a tulajdonságnak nincs szüksége hozzá társított értékre. A puszta jelenléte SSL-kapcsolatot határoz meg. A jövőbeli verziókkal való kompatibilitás érdekében előnyben részesítjük az értéket true . Ebben a módban, amikor SSL-kapcsolatot hoz létre, az ügyfélillesztő ellenőrzi a kiszolgáló identitását, hogy megelőzze a középen belüli támadásokat. Ellenőrzi, hogy a kiszolgálótanúsítványt egy megbízható szolgáltató írta-e alá, és hogy az állomás, amelyhez csatlakozik, megegyezik-e a tanúsítvány állomásnevével.

  • sslmode: Ha titkosítást igényel, és azt szeretné, hogy a kapcsolat sikertelen legyen, ha nem lehet titkosítani, állítsa be a .sslmode=require Ez a beállítás biztosítja, hogy a kiszolgáló ssl-kapcsolatokat fogadjon el ehhez a gazdagéphez/IP-címhez, és hogy a kiszolgáló felismerje az ügyféltanúsítványt. Ha a kiszolgáló nem fogadja el az SSL-kapcsolatokat, vagy nem ismeri fel az ügyféltanúsítványt, a kapcsolat meghiúsul. Az alábbi táblázat a beállítás értékeit sorolja fel:

    SSL mód Explanation
    disable A rendszer nem használ titkosítást.
    allow A titkosítást akkor használja a rendszer, ha a kiszolgáló beállításai megkövetelik vagy kényszerítik.
    prefer A titkosítást akkor használja a rendszer, ha a kiszolgáló beállításai engedélyezik.
    require A rendszer titkosítást használ. Biztosítja, hogy a kiszolgáló ssl-kapcsolatokat fogadjon el ehhez a gazdagép IP-címhez, és hogy a kiszolgáló felismerje az ügyféltanúsítványt.
    verify-ca A rendszer titkosítást használ. Ellenőrizze a kiszolgálótanúsítvány aláírását az ügyfélen tárolt tanúsítványon.
    verify-full A rendszer titkosítást használ. Ellenőrizze a kiszolgálótanúsítvány aláírását és a gazdagép nevét az ügyfélen tárolt tanúsítványon.

Az alapértelmezett sslmode mód eltér a libpq-alapú ügyfelek (például a psql) és a JDBC között. A libpq-alapú ügyfelek alapértelmezés szerint a prefer. A JDBC-ügyfelek alapértelmezés szerint a .verify-full

  • sslcert, sslkeyés sslrootcert: Ezek a paraméterek felülbírálhatják az ügyféltanúsítvány alapértelmezett helyét, a PKCS-8 ügyfélkulcsot és a főtanúsítványt. Alapértelmezés szerint /defaultdir/postgresql.crt, /defaultdir/postgresql.pk8 és /defaultdir/root.crt, ahol defaultdir a Linux rendszerekben ${user.home}/.postgresql/-ként, és a Windows rendszerekben %appdata%/postgresql/-ként van beállítva.

A hitelesítésszolgáltatók a tanúsítványok kiállításáért felelős intézmények. A megbízható hitelesítésszolgáltató olyan entitás, amely jogosult ellenőrizni, hogy valaki az, akinek mondja magát. Ahhoz, hogy ez a modell működjön, minden résztvevőnek meg kell egyeznie a megbízható hitelesítésszolgáltatók készletében. Az összes operációs rendszer és a legtöbb webböngésző megbízható hitelesítésszolgáltatókkal rendelkezik.

A használati verify-ca és verify-fullsslmode konfigurációs beállításokat tanúsítvány-rögzítésnek is nevezhetjük. Ebben az esetben a PostgreSQL-kiszolgálón lévő legfelső szintű hitelesítésszolgáltatói tanúsítványoknak meg kell egyezniük a tanúsítvány aláírásával és még a gazdagép nevével is az ügyfél tanúsítványával.

Előfordulhat, hogy időnként frissítenie kell az ügyfél által tárolt tanúsítványokat, amikor a hitelesítésszolgáltatók módosítják vagy lejárnak a PostgreSQL-kiszolgálótanúsítványokon. Annak megállapításához, hogy a hitelesítésszolgáltatókat rögzíti-e, tekintse meg a tanúsítvány-rögzítést és az Azure-szolgáltatásokat.

Az ügyfél SSL\TLS-konfigurációjáról további információt a PostgreSQL dokumentációjában talál.

A tanúsítványt használó és verify-caverify-full konfigurációs beállításokat (azaz tanúsítványrögzítést) használó sslmode ügyfeleknek három fő hitelesítésszolgáltatói tanúsítványt kell üzembe helyezniük az ügyféltanúsítvány-tárolókban:

Fő hitelesítésszolgáltatói tanúsítványok letöltése és az alkalmazás-ügyfelek frissítése tanúsítvány-rögzítési forgatókönyvekben

Az ügyfélalkalmazások tanúsítvány-rögzítési forgatókönyvekben való frissítéséhez letöltheti a tanúsítványokat:

Ha tanúsítványokat szeretne importálni az ügyféltanúsítvány-tárolókba, előfordulhat, hogy .pem formátumúra kell konvertálnia a tanúsítványfájlokat, miután letöltötte a tanúsítványfájlokat az előző URI-kból. Az OpenSSL segédprogrammal elvégezheti ezeket a fájlkonverziókat:

openssl x509 -inform DER -in certificate.crt -out certificate.pem -outform PEM

Az ügyfélalkalmazások tanúsítványtárolóinak új fő hitelesítésszolgáltatói tanúsítványokkal való frissítésével kapcsolatos információk az alkalmazásügyfelek TLS-tanúsítványainak frissítésében találhatók.

Fontos

Egyes Postgres-ügyfélkódtárak a sslmode=verify-full beállítás használata során csatlakozási hibákat tapasztalhatnak a köztes tanúsítványokkal keresztaláírt legfelső szintű hitelesítésszolgáltatói tanúsítványokkal. Az eredmény alternatív megbízhatósági útvonalak. Ebben az esetben javasoljuk, hogy explicit módon adja meg a paramétert sslrootcert . Vagy állítsa be a PGSSLROOTCERT környezeti változót egy helyi elérési útra, ahol a Microsoft RSA Root CA 2017 fő ca-tanúsítvány található az alapértelmezett értékről %APPDATA%\postgresql\root.crt.

  1. Tapasztalható a kapcsolat megszakadása az ügyfélalkalmazás és a rugalmas Azure Database for PostgreSQL kiszolgálópéldány között - támogatási jegy lett megnyitva ennek kezelésére.
  2. Ha a köztes tanúsítványt elforgatták, előfordulhat, hogy frissítenie kell az ügyféltanúsítvány-tárolót az új köztes tanúsítvánnyal.
  3. hogyan ellenőrizheti, hogy rögzíti-e a köztes tanúsítványt – lásd a tanúsítvány rögzítését és az Azure-szolgáltatásokat.

Replikák olvasása tanúsítvány-rögzítési forgatókönyvekkel

A legfelső szintű hitelesítésszolgáltató Microsoft RSA Root CA 2017-be való migrálásával megvalósítható, hogy az újonnan létrehozott replikák a korábban létrehozott elsődleges kiszolgálónál újabb legfelső szintű hitelesítésszolgáltatói tanúsítványon legyenek. Azokat az ügyfeleket, amelyek a konfigurációs beállításokat (azaz a tanúsítvány rögzítését) használják verify-caverify-fullsslmode , elengedhetetlen, hogy a megszakadt kapcsolat három fő hitelesítésszolgáltatói tanúsítványt fogadjon el:

Az Azure Database for PostgreSQL jelenleg nem támogatja a tanúsítványalapú hitelesítést.

Ügyféltanúsítványok tesztelése a psql-hez való csatlakozással a tanúsítvány-rögzítési forgatókönyvekben

Az ügyfél parancssorával psql tesztelheti a kiszolgálóhoz való kapcsolódást a tanúsítvány-rögzítési forgatókönyvekben:

$ psql "host=hostname.postgres.database.azure.com port=5432 user=myuser dbname=mydatabase sslmode=verify-full sslcert=client.crt sslkey=client.key sslrootcert=ca.crt"

Az SSL- és tanúsítványparaméterekről további információt a psql dokumentációjában talál.

TLS/SSL-kapcsolat tesztelése

Mielőtt megpróbálná elérni az SSL-kompatibilis kiszolgálót egy ügyfélalkalmazásból, győződjön meg arról, hogy a psql-en keresztül érheti el. Ha SSL-kapcsolatot létesített, az alábbi példához hasonló kimenetnek kell megjelennie:

psql (14.5)SSL-kapcsolat (protokoll: TLSv1.2, titkosítás: ECDHE-RSA-AES256-GCM-SHA384, bitek: 256, tömörítés: kikapcsolva)A súgóhoz írja be a "súgót".

Betöltheti a sslinfo bővítményt is, majd meghívhatja a ssl_is_used() függvényt annak megállapításához, hogy használ-e SSL-t. A függvény akkor ad t vissza, ha a kapcsolat SSL-t használ. Ellenkező esetben a visszaadott férték.

Titkosítási csomagok

A titkosítási csomag titkosítási algoritmusok készlete. A TLS-/SSL-protokollok a titkosítási csomagból származó algoritmusokat használnak kulcsok létrehozásához és az információk titkosításához.

A titkosítási csomag látszólag véletlenszerű információk hosszú sztringjeként jelenik meg, de a sztring minden szegmense alapvető információkat tartalmaz. Ez az adatsztring általában több fő összetevőt tartalmaz:

  • Protokoll (azaz TLS 1.2 vagy TLS 1.3)
  • Kulcscsere- vagy szerződés-algoritmus
  • Digitális aláírási (hitelesítési) algoritmus
  • Tömeges titkosítási algoritmus
  • Üzenethitelesítési kód algoritmusa (MAC)

A TLS/SSL különböző verziói különböző titkosítási csomagokat támogatnak. A TLS 1.2 titkosítási csomagjai nem tárgyalhatók meg TLS 1.3-kapcsolatokkal, és fordítva.

Az Azure Database for PostgreSQL jelenleg számos titkosítási csomagot támogat a HIGH:!aNULL kategóriába tartozó TLS 1.2 protokollverzióval.

Troubleshoot

A hibaelhárítási szakaszban található útmutatással gyorsan azonosíthatja és megoldhatja a TLS-/SSL-problémákat. Először reprodukálja a problémát, és gyűjtse össze a diagnosztikai adatokat (ügyféloldali hibaüzenetek, psql-kimenet, OpenSSL s_client kimenet és kiszolgálónaplók), majd ellenőrizze a kiszolgáló paramétereit (require_secure_transport, ssl_min_protocol_version, ssl_max_protocol_version), a tanúsítványláncot és az ügyfél sslmode/sslrootcert beállításait a protokollverziók, a titkosítási csomagok vagy a hiányzó/elforgatott tanúsítványok eltéréseinek azonosításához.

TLS-/SSL-csatlakozási hibák

  1. A TLS/SSL protokoll verziókompatibilitásának hibaelhárításának első lépése az, hogy azonosítja azokat a hibaüzeneteket, amelyeket Ön vagy a felhasználók látnak, amikor megpróbálnak hozzáférni a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz az ügyfél TLS-titkosítása alatt. Az alkalmazástól és a platformtól függően a hibaüzenetek eltérőek lehetnek. Sok esetben a mögöttes problémára mutatnak.
  2. A TLS/SSL protokoll verziókompatibilitásának biztosításához ellenőrizze az adatbázis-kiszolgáló és az alkalmazásügyfél TLS/SSL-konfigurációját, és győződjön meg arról, hogy támogatják a kompatibilis verziókat és titkosítási csomagokat.
  3. Elemezze az adatbázis-kiszolgáló és az ügyfél TLS/SSL-verziói és titkosítási csomagjai közötti eltéréseket vagy hiányosságokat. Próbálja meg feloldani őket bizonyos beállítások engedélyezésével vagy letiltásával, a szoftverek frissítésével vagy leminősítésével, illetve a tanúsítványok vagy kulcsok módosításával. Előfordulhat például, hogy a biztonsági és kompatibilitási követelményektől függően engedélyeznie vagy le kell tiltania bizonyos TLS/SSL-verziókat a kiszolgálón vagy az ügyfélen. Előfordulhat például, hogy le kell tiltania a nem biztonságosnak és elavultnak ítélt TLS 1.0-s és TLS 1.1-et, és engedélyeznie kell a TLS 1.2-t és a TLS 1.3-at, amelyek biztonságosabbak és modernebbek.
  4. A Microsoft RSA Root CA 2017-ben kiadott legújabb tanúsítvány köztes a Digicert Global Root G2 CA által aláírt láncban. Egyes Postgres-ügyfélkódtárak használata sslmode=verify-full vagy sslmode=verify-ca beállításai között kapcsolati hibák léphetnek fel a köztes tanúsítványokkal keresztaláírt legfelső szintű hitelesítésszolgáltatói tanúsítványokkal. Az eredmény alternatív megbízhatósági útvonalak.

A problémák megoldásához adja hozzá mindhárom szükséges tanúsítványt az ügyféltanúsítvány-tárolóhoz, vagy explicit módon adja meg a paramétert sslrootcert . Vagy állítsa a PGSSLROOTCERT környezeti változót arra a helyi elérési útra, ahol a Microsoft RSA Root CA 2017 fő CA-tanúsítvány található az alapértelmezett értékről %APPDATA%\postgresql\root.crt.

Tanúsítvány-rögzítési problémák

Megjegyzés:

Ha nem használja a sslmode=verify-full vagy sslmode=verify-ca beállításokat az ügyfélalkalmazás kapcsolati karakterláncában, akkor a tanúsítványváltások nem érintik Önt. Ezért nem kell követnie az ebben a szakaszban leírt lépéseket.

  1. Ellenőrizze, hogy tanúsítvány-rögzítést használ-e az alkalmazásban.
  2. A megbízható legfelső szintű tárolóban található tanúsítványok listájának létrehozása
    1. A Java Key Store-ban például programozott módon lekérheti a megbízható tanúsítványok listáját.
    2. Ellenőrizheti például a Cacerts Java keystore-t, hogy tartalmazza-e már a szükséges tanúsítványokat.
  3. Tanúsítvány-rögzítést használ, ha egyéni köztes vagy egyéni PostgreSQL-kiszolgálói tanúsítványokkal rendelkezik.
  4. A tanúsítvány rögzítésének eltávolításához távolítsa el az összes tanúsítványt a megbízható legfelső szintű tárolóból, és adja hozzá az új tanúsítványokat.
    1. A frissített tanúsítványokat a Microsoft hivatalos adattárából töltheti le: az Azure Hitelesítésszolgáltató adatai.
      1. Jelenlegi lánc:
        1. DigiCert globális gyökér G2
        2. Microsoft Azure RSA TLS tanúsítványkiadó CA 03 / 04 / 07 / 08
      2. Új lánc:
        1. DigiCert globális gyökér G2
        2. Microsoft TLS RSA Root G2
        3. Microsoft TLS G2 RSA CA OCSP 02 / 04 / 06 / 08 / 10 / 12 / 14 / 16

Ha a lépések elvégzése után is problémákat tapasztal, forduljon a Microsoft ügyfélszolgálatához. Szerepeltessük az ICA Rotáció 2026 címben.