Megosztás:


A titkosítás támogatásának ismertetése

JDBC-illesztőprogram letöltése

Az SQL Serverhez való csatlakozáskor, ha az alkalmazás titkosítást kér, és az SQL Server példánya a TLS-titkosítás támogatására van konfigurálva, az SQL Server Microsoft JDBC-illesztőprogramja kezdeményezi a TLS-kézfogást. A kézfogás lehetővé teszi a kiszolgáló és az ügyfél számára az adatok védelmére szolgáló titkosítási és titkosítási algoritmusok egyeztetését. A TLS-kézfogás befejezése után az ügyfél és a kiszolgáló biztonságosan küldheti el a titkosított adatokat. A TLS-kézfogás során a kiszolgáló elküldi a nyilvános kulcsú tanúsítványát az ügyfélnek. A nyilvános kulcsú tanúsítvány kiállítója hitelesítésszolgáltatóként (CA) ismert. Az ügyfél felelős annak ellenőrzéséért, hogy a hitelesítésszolgáltató az ügyfél megbízhatósága.

Ha az alkalmazás nem kér titkosítást, az SQL Server Microsoft JDBC-illesztőprogramja nem kényszeríti az SQL Servert a TLS-titkosítás támogatására. Ha az SQL Server-példány nincs konfigurálva a TLS-titkosítás kényszerítésére, a rendszer titkosítás nélkül hoz létre kapcsolatot. Ha az SQL Server-példány úgy van konfigurálva, hogy kényszerítse a TLS-titkosítást, az illesztőprogram automatikusan engedélyezi a TLS-titkosítást, ha megfelelően konfigurált Java virtuális gépen (JVM) fut, különben a kapcsolat megszakad, és az illesztőprogram hibát fog okozni.

Megjegyzés:

Győződjön meg arról, hogy a kiszolgálónévnek átadott érték pontosan egyezik a TLS-kapcsolat sikerességéhez használt kiszolgálótanúsítványban szereplő köznapi névvel (CN) vagy DNS-névvel.

További információ a TLS SQL Serverhez való konfigurálásáról: Titkosított kapcsolatok engedélyezése az adatbázismotorral.

Megjegyzések

Annak érdekében, hogy az alkalmazások TLS-titkosítást használhassanak, az SQL Server Microsoft JDBC-illesztőprogramja az 1.2-es verziótól kezdve a következő kapcsolati tulajdonságokat vezette be: titkosítás, trustServerCertificate, trustStore, trustStorePassword és hostNameInCertificate. Annak érdekében, hogy az illesztőprogram TLS-titkosítással használhassa a TDS 8.0-t, a 11.2-es verziótól kezdődően bevezettük a Kapcsolat tulajdonságkiszolgálót . További információ: Kapcsolat tulajdonságainak beállítása.

Az alábbi táblázat összefoglalja, hogyan viselkedik az SQL Server-verzióhoz készült Microsoft JDBC-illesztőprogram a lehetséges TLS-kapcsolati forgatókönyvek esetén. Minden forgatókönyv különböző TLS-kapcsolattulajdonságokat használ. A táblázat a következőket tartalmazza:

  • üres: "A tulajdonság nem létezik a kapcsolati sztringben"
  • érték: "A tulajdonság létezik a kapcsolati sztringben, és az értéke érvényes"
  • bármely: "Nem számít, hogy a tulajdonság létezik-e a kapcsolati sztringben, vagy az értéke érvényes"

Megjegyzés:

Ugyanez a viselkedés érvényes az SQL Server felhasználói hitelesítésére és a Windows integrált hitelesítésére is.

Tulajdonságbeállítások Magatartás
titkosítás = hamis vagy üres
trustServerCertificate = bármely
hostNameInCertificate = bármely
trustStore = bármely
trustStorePassword = bármely
Az illesztőprogram nem kényszeríti a kiszolgálót a TLS-titkosítás támogatására. Ha a kiszolgáló rendelkezik önaláírt tanúsítvánnyal, az illesztőprogram kezdeményezi a TLS-tanúsítvány cseréjét. A TLS-tanúsítvány nem lesz érvényesítve, és csak a hitelesítő adatok (a bejelentkezési csomagban) vannak titkosítva.

Ha a kiszolgáló megköveteli, hogy az ügyfél támogassa a TLS-titkosítást, az illesztőprogram kezdeményezi a TLS-tanúsítvány cseréjét. A TLS-tanúsítvány nem lesz érvényesítve, de a teljes kommunikáció titkosítva lesz.
titkosítás = igaz
trustServerCertificate = true
hostNameInCertificate = bármely
trustStore = bármely
trustStorePassword = bármely
Az illesztőprogram TLS-titkosítást kér a kiszolgálóval.

Ha a kiszolgáló megköveteli, hogy az ügyfél támogassa a TLS-titkosítást, vagy ha a kiszolgáló támogatja a titkosítást, az illesztőprogram kezdeményezi a TLS-tanúsítvány cseréjét. Ha a trustServerCertificate tulajdonság értéke "true", az illesztő nem érvényesíti a TLS-tanúsítványt.

Ha a kiszolgáló nincs a titkosítás támogatásához konfigurálva, az illesztőprogram hibát jelez, és megszakítja a kapcsolatot.
titkosítás = igaz
trustServerCertificate = hamis vagy üres
hostNameInCertificate = üres
trustStore = üres
trustStorePassword = üres
Az illesztőprogram TLS-titkosítást kér a kiszolgálóval.

Ha a kiszolgáló megköveteli, hogy az ügyfél támogassa a TLS-titkosítást, vagy ha a kiszolgáló támogatja a titkosítást, az illesztőprogram kezdeményezi a TLS-tanúsítvány cseréjét.

Az illesztő a kapcsolati URL-címen megadott ServerName tulajdonságot fogja használni a kiszolgáló TLS-tanúsítványának ellenőrzéséhez, és a trust manager factory keresési szabályaira támaszkodva határozza meg, hogy melyik tanúsítványtárolót használja.

Ha a kiszolgáló nincs a titkosítás támogatásához konfigurálva, az illesztőprogram hibát jelez, és megszakítja a kapcsolatot.
titkosítás = igaz
trustServerCertificate = hamis vagy üres
hostNameInCertificate = value
trustStore = üres
trustStorePassword = üres
Az illesztőprogram TLS-titkosítást kér a kiszolgálóval.

Ha a kiszolgáló megköveteli, hogy az ügyfél támogassa a TLS-titkosítást, vagy ha a kiszolgáló támogatja a titkosítást, az illesztőprogram kezdeményezi a TLS-tanúsítvány cseréjét.

Az illesztő a gazdagépNameInCertificate tulajdonságához megadott érték használatával ellenőrzi a TLS-tanúsítvány tulajdonosi értékét.

Ha a kiszolgáló nincs a titkosítás támogatásához konfigurálva, az illesztőprogram hibát jelez, és megszakítja a kapcsolatot.
titkosítás = igaz
trustServerCertificate = hamis vagy üres
hostNameInCertificate = üres
trustStore = érték
trustStorePassword = érték
Az illesztőprogram TLS-titkosítást kér a kiszolgálóval.

Ha a kiszolgáló megköveteli, hogy az ügyfél támogassa a TLS-titkosítást, vagy ha a kiszolgáló támogatja a titkosítást, az illesztőprogram kezdeményezi a TLS-tanúsítvány cseréjét.

Az illesztőprogram a trustStore tulajdonságérték használatával fogja megkeresni a tanúsítvány trustStore-fájlját és az trustStorePassword tulajdonság értékét az trustStore-fájl integritásának ellenőrzéséhez.

Ha a kiszolgáló nincs a titkosítás támogatásához konfigurálva, az illesztőprogram hibát jelez, és megszakítja a kapcsolatot.
titkosítás = igaz
trustServerCertificate = hamis vagy üres
hostNameInCertificate = üres
trustStore = üres
trustStorePassword = érték
Az illesztőprogram TLS-titkosítást kér a kiszolgálóval.

Ha a kiszolgáló megköveteli, hogy az ügyfél támogassa a TLS-titkosítást, vagy ha a kiszolgáló támogatja a titkosítást, az illesztőprogram kezdeményezi a TLS-tanúsítvány cseréjét.

Az illesztőprogram az trustStorePassword tulajdonságérték használatával ellenőrzi az alapértelmezett trustStore-fájl integritását.

Ha a kiszolgáló nincs a titkosítás támogatásához konfigurálva, az illesztőprogram hibát jelez, és megszakítja a kapcsolatot.
titkosítás = igaz
trustServerCertificate = hamis vagy üres
hostNameInCertificate = üres
trustStore = érték
trustStorePassword = üres
Az illesztőprogram TLS-titkosítást kér a kiszolgálóval.

Ha a kiszolgáló megköveteli, hogy az ügyfél támogassa a TLS-titkosítást, vagy ha a kiszolgáló támogatja a titkosítást, az illesztőprogram kezdeményezi a TLS-tanúsítvány cseréjét.

Az illesztőprogram az trustStore tulajdonságérték használatával keresi meg az trustStore-fájl helyét.

Ha a kiszolgáló nincs a titkosítás támogatásához konfigurálva, az illesztőprogram hibát jelez, és megszakítja a kapcsolatot.
titkosítás = igaz
trustServerCertificate = hamis vagy üres
hostNameInCertificate = value
trustStore = üres
trustStorePassword = érték
Az illesztőprogram TLS-titkosítást kér a kiszolgálóval.

Ha a kiszolgáló megköveteli, hogy az ügyfél támogassa a TLS-titkosítást, vagy ha a kiszolgáló támogatja a titkosítást, az illesztőprogram kezdeményezi a TLS-tanúsítvány cseréjét.

Az illesztőprogram az trustStorePassword tulajdonságérték használatával ellenőrzi az alapértelmezett trustStore-fájl integritását. Emellett az illesztőprogram a hostNameInCertificate tulajdonságérték használatával ellenőrzi a TLS-tanúsítványt.

Ha a kiszolgáló nincs a titkosítás támogatásához konfigurálva, az illesztőprogram hibát jelez, és megszakítja a kapcsolatot.
titkosítás = igaz
trustServerCertificate = hamis vagy üres
hostNameInCertificate = value
trustStore = érték
trustStorePassword = üres
Az illesztőprogram TLS-titkosítást kér a kiszolgálóval.

Ha a kiszolgáló megköveteli, hogy az ügyfél támogassa a TLS-titkosítást, vagy ha a kiszolgáló támogatja a titkosítást, az illesztőprogram kezdeményezi a TLS-tanúsítvány cseréjét.

Az illesztőprogram az trustStore tulajdonságérték használatával keresi meg az trustStore-fájl helyét. Emellett az illesztőprogram a hostNameInCertificate tulajdonságérték használatával ellenőrzi a TLS-tanúsítványt.

Ha a kiszolgáló nincs a titkosítás támogatásához konfigurálva, az illesztőprogram hibát jelez, és megszakítja a kapcsolatot.
titkosítás = igaz
trustServerCertificate = hamis vagy üres
hostNameInCertificate = value
trustStore = érték
trustStorePassword = érték
Az illesztőprogram TLS-titkosítást kér a kiszolgálóval.

Ha a kiszolgáló megköveteli, hogy az ügyfél támogassa a TLS-titkosítást, vagy ha a kiszolgáló támogatja a titkosítást, az illesztőprogram kezdeményezi a TLS-tanúsítvány cseréjét.

Az illesztőprogram a trustStore tulajdonságérték használatával fogja megkeresni a tanúsítvány trustStore-fájlját és az trustStorePassword tulajdonság értékét az trustStore-fájl integritásának ellenőrzéséhez. Emellett az illesztőprogram a hostNameInCertificate tulajdonságérték használatával ellenőrzi a TLS-tanúsítványt.

Ha a kiszolgáló nincs a titkosítás támogatásához konfigurálva, az illesztőprogram hibát jelez, és megszakítja a kapcsolatot.
titkosítás = szigorú
hostNameInCertificate = value
trustStore = üres
trustStorePassword = üres
serverCertificate = value
Az illesztőprogram A TDS 8.0 strict TLS-titkosítás használatát kéri a kiszolgálóval.

Az illesztőprogram első műveletként kezdeményezi a TLS-kézfogást és a tanúsítványcserét a kiszolgálóval.

A trustServerCertificate beállítás figyelmen kívül lesz hagyva, és módban hamisként lesz kezelve strict .

Az illesztőprogram az opcionális hostNameInCertificate vagy serverCertificate tulajdonságokat fogja használni a kiszolgáló TLS-tanúsítványának érvényesítéséhez.

Ha a kiszolgáló nincs a TDS 8.0-kapcsolatok támogatására konfigurálva, az illesztőprogram hibát jelez, és megszakítja a kapcsolatot.

Ha a titkosítási tulajdonság értéke igaz, az SQL Server Microsoft JDBC-illesztőprogramja a JVM alapértelmezett JSSE biztonsági szolgáltatójával egyezteti a TLS-titkosítást az SQL Serverrel. Előfordulhat, hogy az alapértelmezett biztonsági szolgáltató nem támogatja a TLS-titkosítás sikeres egyeztetéséhez szükséges összes funkciót. Előfordulhat például, hogy az alapértelmezett biztonsági szolgáltató nem támogatja az SQL Server TLS-tanúsítványban használt RSA nyilvános kulcs méretét. Ebben az esetben az alapértelmezett biztonsági szolgáltató hibát okozhat, amely miatt a JDBC-illesztő megszakítja a kapcsolatot. A probléma megoldásához az alábbi lehetőségek egyikét használhatja:

  • Az SQL Server konfigurálása kisebb RSA nyilvános kulccsal rendelkező kiszolgálói tanúsítvánnyal
  • Konfigurálja a JVM-et egy másik JSSE biztonsági szolgáltató használatára a "<java-home>/lib/security/java.security" biztonsági tulajdonságok fájljában
  • Másik JVM használata

Kiszolgálói TLS-tanúsítvány érvényesítése

A TLS-kézfogás során a kiszolgáló elküldi a nyilvános kulcsú tanúsítványát az ügyfélnek. A JDBC-illesztőprogramnak vagy -ügyfélnek ellenőriznie kell, hogy a kiszolgálótanúsítványt egy olyan hitelesítésszolgáltató állítja-e ki, amelyet az ügyfél megbízik. Az illesztőprogramnak a következő feltételeknek kell megfelelnie a kiszolgálótanúsítványnak:

  • A tanúsítványt egy megbízható hitelesítésszolgáltató adta ki.
  • A tanúsítványt kiszolgálóhitelesítéshez kell kiállítani.
  • A tanúsítvány nem járt le.
  • A tulajdonos köznapi neve (CN) vagy a tanúsítvány tulajdonos alternatív neve (SAN) dns-neve pontosan megegyezik a kapcsolati sztringben megadott kiszolgálónév értékkel, vagy ha meg van adva, a hostNameInCertificate tulajdonságértékével.
  • A DNS-név tartalmazhat helyettesítő karaktereket. Az SQL ServerHez készült Microsoft JDBC-illesztőprogram nem támogatja a helyettesítő kártyák egyeztetését a 7.2-es verzióban. Vagyis abc.com nem egyezik a *.com, de a *.com *.com. A 7.2-es és újabb verzió esetén a standard tanúsítvány helyettesítőkártyás egyeztetése támogatott.

A TDS 8.0 titkosítással való strict használatához a serverCertificate tulajdonság értéke megadja a kiszolgálótanúsítvány-érvényesítéshez használandó kiszolgálói tanúsítvány elérési útját. Ennek a fájlnak PEM fájlformátumot kell használnia. A kiszolgálótól kapott tanúsítványnak pontosan meg kell egyeznie ezzel a tanúsítvánnyal.

Lásd még

Titkosítás használata
JDBC-illesztőalkalmazások védelme