Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
mssql-python-drivrutinen stödjer krypterade anslutningar via Transport Layer Security (TLS). Kryptering skyddar data som överförs mellan din applikation och SQL Server, och förhindrar avlyssning och attacker från angriparen i mitten.
Anslutningskryptering
Aktivera kryptering
Använd Encrypt nyckelordet för att styra anslutningskryptering:
import mssql_python
# Require encryption (recommended)
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Kryptera nyckelordsvärden
| Värde | Beskrivning |
|---|---|
yes |
Kräver kryptering och misslyckas om servern inte stödjer TLS. |
no |
Den krypterar inte anslutningen. Rekommenderas inte för produktion. |
strict |
Använder TDS 8.0 strikt krypteringsläge. Kräver SQL Server 2022 eller senare. |
Important
Azure SQL Database kräver Encrypt=yes. Anslutningar utan kryptering avvisas.
Certifikatverifiering
LitaPåServercertifikat
Styr om drivrutinen validerar serverns TLS-certifikat:
# 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;"
)
| Värde | Beskrivning |
|---|---|
no |
Validerar certifikatet mot betrodda CA:er. Detta värde är standard- och rekommenderad inställning. |
yes |
Litar på vilket certifikat som helst och hoppar över validering. Denna miljö är osäker. |
Caution
Inställning TrustServerCertificate=yes i produktion utsätter din applikation för attacker från motståndaren i mitten. Använd endast denna inställning för utveckling med självsignerade certifikat.
TDS 8.0 strikt kryptering
SQL Server 2022 och senare stöder TDS 8.0 med strikt krypteringsläge:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Encrypt=strict;"
)
Strikt läge ger den högsta säkerhetsnivån:
- Föraren etablerar TLS innan någon TDS-handskakning.
- Certifikatvalidering krävs, och du kan inte använda
TrustServerCertificate=yes. - Detta läge ger högsta skyddsnivå mot avlyssning.
HostNameInCertificate
När serverns certifikatnamn inte matchar anslutningsserverns namn:
conn = mssql_python.connect(
"Server=192.168.1.100;" # IP address
"Database=<database>;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
"HostNameInCertificate=<server>.contoso.com;" # Certificate CN
)
Detta nyckelord är användbart när:
- Din applikation ansluter via en IP-adress istället för ett värdnamn.
- Servern ligger bakom en lastbalanserare.
- Certifikatet använder ett annat ämnesnamn än anslutningsserverns namn.
Rekommenderade konfigurationer
Azure SQL Database
Azure SQL Database kräver kryptering:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
)
Lokal SQL Server (produktion)
För lokal SQL Server med ett CA-signerat certifikat, håll TrustServerCertificate=no så att drivrutinen validerar serveridentiteten:
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
)
Utveckling med självsignerade certifikat
Under utveckling med självsignerade certifikat, ställ TrustServerCertificate=yes in att hoppa över certifikatvalidering:
conn = mssql_python.connect(
"Server=localhost;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=yes;"
)
SQL Server 2022 och senare versioner med strikt läge
Använd Encrypt=strict för TDS 8.0, som omsluter hela anslutningen i TLS från början:
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"Encrypt=strict;"
)
Troubleshooting
"SSL-leverantör: Certifikatvalideringsfel"
Servercertifikatet kunde inte valideras. Gör dessa kontroller:
- Verifiera att certifikatet kommer från en betrodd CA.
- Kontrollera att certifikatets utgångsdatum är giltigt.
- Verifiera att serverns värdnamn matchar certifikatet CN eller SAN.
- För utveckling använder du
TrustServerCertificate=yes.
"TCP-leverantör: En befintlig anslutning tvingades avslutas"
Servern kan kräva kryptering, men klienten begärde det inte. Prova följande steg:
- Lägg till
Encrypt=yesi din reťazec pripojenia. - Kontrollera SQL Server-konfigurationen för Force Encryption-inställningen.
"Certifikatkedjan utfärdades av en myndighet som inte är betrodd"
Certifikatets rot-CA finns inte i systemets betrodda rotlager. Gör dessa kontroller:
- Installera CA-certifikatet i den betrodda rotbutiken.
- För Azure SQL, se till att ditt system litar på Microsoft CA-certifikat.
- För utveckling använder du
TrustServerCertificate=yes.
Anslutningen misslyckas med strikt kryptering
TDS 8.0 strikt läge har följande krav:
- Servern måste köra SQL Server 2022 eller senare.
- Servern måste ha ett giltigt, betrodd certifikat.
- Du kan inte ställa in
TrustServerCertificate=yes.
Om servern inte stödjer TDS 8.0, använd Encrypt=yes istället.