Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Azure Database for PostgreSQL – Rugalmas kiszolgáló
A rugalmas Azure Database for PostgreSQL-kiszolgáló a Transport Layer Security (TLS) használatával kényszeríti az ügyfélalkalmazások rugalmas Azure Database for PostgreSQL-kiszolgálóhoz való csatlakoztatását. 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.
Mi az a TLS?
A TLS a Netscape SSL protokolljából készült, és rendszeresen lecserélte. Az SSL vagy a TLS/SSL kifejezéseket még mindig gyakran használják felcserélhetően. A TLS két rétegből áll: a TLS rekordbemutatóból és a TLS kézfogási show-ból. A rekordbemutató a társítás biztonságát biztosítja. A kézfogási show lehetővé teszi a kiszolgáló és az ügyfél számára, hogy megerősítse egymást, és koordinálja a titkosítási értékeléseket és a titkosítási kulcsokat az információk kereskedelme előtt.
Az előző ábrán egy tipikus TLS 1.2 kézfogási sorozat látható, amely a következő lépésekből áll:
- Az ügyfél egy olyan
ClientHello
üzenet küldésével kezdődik, amely kifejezi a TLS 1.2-en keresztüli kommunikációra való hajlandóságot az ügyfél által támogatott titkosítási csomagokkal. - A kiszolgáló megkapja az üzenetet, válaszol
ServerHello
, és beleegyezik abba, hogy tLS 1.2-en keresztül kommunikáljon az ügyféllel egy adott titkosítási csomag használatával. - A kiszolgáló elküldi a kulcsmegosztást is. A kulcsmegosztás jellemzői a kiválasztott titkosítási csomag alapján változnak. Ahhoz, hogy az ügyfél és a kiszolgáló megállapodjon egy titkosítási kulcsban, meg kell kapniuk egymás részét vagy megosztását.
- A kiszolgáló elküldi a tanúsítványt (a hitelesítésszolgáltató [CA] által aláírt) és egy aláírást a következő részeken
ClientHello
: ésServerHello
. A kulcsmegosztást is tartalmazza. Így az ügyfél tudja, hogy hitelesek. - Miután az ügyfél sikeresen megkapta az adatokat, majd létrehozta a saját kulcsmegosztását, összekeveri azokat a kiszolgálókulcs-megosztással, hogy titkosítási kulcsokat hozzon létre a munkamenethez.
- Az ügyfél elküldi a kiszolgálónak a kulcsmegosztást, engedélyezi a titkosítást
Finished
, és üzenetet küld. Ez az üzenet az eddigi események átiratának kivonata. A kiszolgáló ugyanezt teszi. Összekeveri a kulcsmegosztásokat a kulcs lekéréséhez, és elküldi a sajátFinished
üzenetét. - Mostantól az alkalmazásadatok titkosítva is elküldhetők a kapcsolaton.
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. A Egyesült Államok 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.
Feljegyzé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óval 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óval 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_version
ssl_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.
A rugalmas Azure Database for PostgreSQL-kiszolgáló jelenleg nem támogatja a következőt:
- SSL-tanúsítványalapú hitelesítés.
- Egyéni SSL\TLS-tanúsítványok.
Feljegyzés
A Microsoft alapvető ca-módosításokat hajtott végre a különböző Azure-szolgáltatásokhoz, például a rugalmas Azure Database for PostgreSQL-kiszolgálóhoz. 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ó 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 postgres
kell 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 a rugalmas Azure Database for PostgreSQL-kiszolgáló közötti kapcsolatvédelem érdekében a legújabb, legbiztonságosabb TLS-verzió kényszerítése szükséges, állítsa be a ssl_min_protocol_version
1.3
értékre. Ehhez a beállításhoz a rugalmas Azure Database for PostgreSQL-kiszolgálóhoz 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ékettrue
. 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 Magyarázat 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 aprefer
. A JDBC-ügyfelek alapértelmezés szerint a .verify-full
sslcert
,sslkey
éssslrootcert
: 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 az/defaultdir/postgresql.crt
/defaultdir/postgresql.pk8
nix-rendszerekben/defaultdir/root.crt
ésdefaultdir
a Windowsban a , illetve a hol${user.home}/.postgresql/
található%appdata%/postgresql/
.
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-full
sslmode
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-ca
verify-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:
- A DigiCert Global Root G2 és a Microsoft RSA Root CA 2017 legfelső szintű hitelesítésszolgáltatói tanúsítványai, mivel a szolgáltatások a Digicertből a Microsoft CA-ba migrálódnak.
- A Digicert globális legfelső szintű hitelesítésszolgáltatója az örökölt kompatibilitás érdekében.
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:
- Microsoft RSA Root CA 2017
- DigiCert Global Root G2
- Digicert globális legfelső szintű hitelesítésszolgáltató
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
.
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-ca
verify-full
sslmode
, elengedhetetlen, hogy a megszakadt kapcsolat három fő hitelesítésszolgáltatói tanúsítványt fogadjon el:
- Microsoft RSA Root CA 2017
- DigiCert Global Root G2
- Digicert globális legfelső szintű hitelesítésszolgáltató
A rugalmas Azure Database for PostgreSQL-kiszolgáló 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ó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.
A rugalmas Azure Database for PostgreSQL-kiszolgáló jelenleg számos titkosítási csomagot támogat a HIGH:!aNULL kategóriába tartozó TLS 1.2 protokollverzióval.
TLS-/SSL-csatlakozási hibák elhárítása
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óhoz 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.
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.
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.
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
vagysslmode=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 aPGSSLROOTCERT
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
.
Kapcsolódó tartalom
- Megtudhatja, hogyan hozhat létre rugalmas Azure Database for PostgreSQL-kiszolgálót a Privát hozzáférés (VNet-integráció) lehetőséggel az Azure Portalon vagy az Azure CLI-ben.
- Megtudhatja, hogyan hozhat létre rugalmas Azure Database for PostgreSQL-kiszolgálót az Azure Portalon vagy az Azure CLI-ben elérhető Nyilvános hozzáférés (engedélyezett IP-címek) lehetőséggel.