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.
Az mssql-python illezőprogram támogatja a titkosított kapcsolatokat a Transport Layer Security (TLS) segítségével. A titkosítás védi az adatokat az alkalmazásod és az SQL Server közötti átvitel során, és megakadályozza a lehallgatást és a középen belüli támadásokat.
Kapcsolattitkosítás
Titkosítás engedélyezése
Használd a Encrypt kulcsszót a kapcsolat titkosításának vezérléséhez:
import mssql_python
# Require encryption (recommended)
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Kulcsszóértékek titkosítása
| Érték | Leírás |
|---|---|
yes |
Titkosítást igényel, és akkor hibázik, ha a szerver nem támogatja a TLS-t. |
no |
Nem titkosítja a kapcsolatot. Nem javasolt éles környezetben történő használatra. |
strict |
TDS 8.0 szigorú titkosítási módot használ. SQL Server 2022 vagy újabb verziót igényel. |
Important
Az Azure SQL Database megköveteli a következőt: Encrypt=yes. Titkosítás nélküli kapcsolatokat elutasítják.
Tanúsítvány érvényesítése
MegbízhatóSzerverTanúsítvány
Szabályozza, hogy az illesztőprogram érvényesíti-e a szerver TLS tanúsítványát:
# Validate server certificate (recommended for production)
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
)
# Skip certificate validation (development only)
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=yes;"
)
| Érték | Leírás |
|---|---|
no |
A tanúsítványt megbízható CA-kkal szemben érvényesíti. Ez az érték az alapértelmezett és ajánlott beállítás. |
yes |
Megbízik bármilyen tanúsítványban, és kihagyja az ellenőrzést. Ez a beállítás bizonytalan. |
Caution
A TrustServerCertificate=yes gyártásba állítás lehetővé teszi az alkalmazásodat a középpontban lévő ellenfél támadásainak is. Ezt a beállítást csak önalázott tanúsítványokkal való fejlesztéshez használd.
TDS 8.0 szigorú titkosítás
Az SQL Server 2022 és újabb verziók támogatják a TDS 8.0-t szigorú titkosítási móddal:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Encrypt=strict;"
)
A szigorú mód biztosítja a legmagasabb biztonsági szintet:
- A sofőr a TLS-t minden TDS kézfogás előtt állítja be.
- Tanúsítvány ellenőrzése szükséges, és nem használhatod
TrustServerCertificate=yes. - Ez a mód a legmagasabb szintű védelmet nyújtja az elfogás ellen.
HostNévATanúsítványban
Ha a szerver tanúsítvány neve nem egyezik meg a kapcsolati szerver nevével:
conn = mssql_python.connect(
"Server=192.168.1.100;" # IP address
"Database=<database>;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
"HostNameInCertificate=<server>.contoso.com;" # Certificate CN
)
Ez a kulcsszó akkor hasznos, ha:
- Az alkalmazásod IP-címen keresztül csatlakozik a gépnév helyett.
- A szerver egy terheléselosztó mögött van.
- A tanúsítvány más tárgynevet használ, mint a kapcsolatszerver neve.
Ajánlott konfigurációk
Azure SQL Database
Az Azure SQL Database titkosítást igényel:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
)
Helyszíni SQL Server (éles)
On-premises SQL Server esetén, amelynek CA-aláírt tanúsítványa van, tartsuk TrustServerCertificate=no úgy, hogy az illesztőprogram érvényesítse a szerver identitását:
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
)
Önaláíró tanúsítványokkal való fejlesztés
Fejlesztés során önaláírt tanúsítványok használatakor állítsa be a TrustServerCertificate=yes értéket a tanúsítvány ellenőrzésének kihagyásához:
conn = mssql_python.connect(
"Server=localhost;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=yes;"
)
SQL Server 2022 és újabb verziók szigorú móddal
Használd Encrypt=strict TDS 8.0-t, amely az egész kapcsolatot TLS-be csomagolja az elejétől fogva:
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"Encrypt=strict;"
)
Hibaelhárítás
"SSL szolgáltató: tanúsítvány ellenőrzési hiba"
A szerver tanúsítványt nem lehetett ellenőrizni. Végezze le ezeket az ellenőrzéseket:
- Ellenőrizd, hogy a tanúsítvány megbízható CA-tól származik.
- Ellenőrizd, hogy a tanúsítvány lejárati dátuma érvényes-e.
- Ellenőrizd, hogy a szerver hosztneve egyezik-e a CN vagy SAN tanúsítványsal.
- Fejlesztéshez használja a következőt
TrustServerCertificate=yes: .
"TCP szolgáltató: Egy meglévő kapcsolatot erőszakkal lezártak"
A szerver titkosítást igényelhet, de az ügyfél nem kérte. Próbálkozzon az alábbi lépésekkel:
- Adja hozzá a(z)
Encrypt=yeselemet a kapcsolódási sztringhez. - Nézd meg az SQL Server konfigurációját a Force Encryption beállítás miatt.
"A tanúsítványláncot egy nem megbízható hatóság adta ki"
A tanúsítvány gyökér CA-ja nincs a rendszer megbízható gyökértárolójában. Végezze le ezeket az ellenőrzéseket:
- Telepítse a CA tanúsítványt a megbízható gyökérraktárba.
- Azure SQL esetén győződj meg róla, hogy a rendszered megbízik a Microsoft CA tanúsítványaiban.
- Fejlesztéshez használja a következőt
TrustServerCertificate=yes: .
A kapcsolat meghibásodik szigorú titkosítással
A TDS 8.0 szigorú mód a következő követelményeket tartalmazza:
- A szervernek SQL Server 2022 vagy újabb verziót kell futtatnia.
- A szervernek érvényes, megbízható tanúsítványsal kell rendelkeznie.
- Nem lehet beállítani
TrustServerCertificate=yes.
Ha a szerver nem támogatja a TDS 8.0-t, használd Encrypt=yes helyette.