Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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.