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.
Drivrutinen go-mssqldb stöder flera krypteringsmetoder och certifikatvalideringsstrategier för anslutningar till SQL Server och Azure SQL. Den här artikeln förklarar varje krypteringsläge, hur man konfigurerar certifikatvalidering och när man ska använda TDS 8.0 strikt läge.
Välj en TLS-konfiguration
Använd denna tabell för att välja det säkraste alternativet som passar din miljö innan du justerar individuella parametrar.
| Scenario | Rekommenderade inställningar | Varför |
|---|---|---|
| Azure SQL eller SQL Server 2022 och senare versioner, och du vill ha det starkaste standardskyddet | encrypt=strict |
TDS 8.0 utför TLS-handskakningen före TDS-förhandling och validerar alltid certifikatet. |
| Servercertifikatet kedjas till en betrodd offentlig eller företagsbaserad CA | encrypt=true |
Standardvalidering av certifikat räcker vanligtvis när värdnamnet och förtroendekedjan redan är korrekta. |
| Servern använder en privat CA som inte finns i systemets förtroendelagring | encrypt=true&certificate=/path/to/ca-cert.pem |
Lägger till CA-certifikatet i en anpassad förtroendepool och behåller normal kedjevalidering. |
| Servern använder ett självsignerat certifikat och du vill använda certifikatbindning | encrypt=true&serverCertificate=/path/to/server.pem |
Jämför det exakta servercertifikatet byte för byte istället för att förlita sig på en CA-kedja. |
| Endast lokal utveckling eller tillfälliga testmiljöer | encrypt=true&TrustServerCertificate=true |
Behåller kryptering på, men hoppar över verifiering av serveridentitet. Använd inte denna inställning i produktionen. |
Krypteringslägen
Sätt anslutningsparametern encrypt till ett av följande värden:
| Value | Behavior |
|---|---|
strict |
TDS 8.0-kryptering. TLS-handslaget sker innan förhandlingen om TDS-anslutningen. Kräver SQL Server 2022 eller Azure SQL. |
true eller mandatory |
Anslutningen krypteras efter TDS-förinloggningshandskakningen. |
false eller optional |
Kryptering används endast om servern kräver det. Detta är standardinställningen när encrypt inte specificeras. Azure SQL kräver alltid kryptering på serversidan, så anslutningar till Azure SQL krypteras oavsett denna inställning. |
disable |
Ingen kryptering. Rekommenderas inte för produktion. |
Exempel
Aktivera kryptering i reťazec pripojenia genom att använda parameternencrypt:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true
Certifikatverifiering
När du aktiverar kryptering (encrypt=true eller encrypt=strict), validerar drivrutinen servercertifikatet om du inte sätter TrustServerCertificate=true. Två oberoende metoder finns för denna validering.
Kedjevalidering med hjälp av parametern certificate
Tillhandahåll en PEM- eller DER-certifikatfil. Drivrutinen lägger till certifikatet i en anpassad förtroendepool och utför standard X.509-kedjevalidering mot den poolen:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&certificate=/path/to/ca-cert.pem
Bytenivåjämförelse med hjälp av parametern serverCertificate
Note
Parametern serverCertificate introducerades i drivrutin v1.9.6.
Tillhandahåll en PEM- eller DER-fil som innehåller exakt servercertifikat. Drivrutinen jämför serverns certifikat byte för byte med den tillhandahållna filen. Drivrutinen utför inte validering av kedjan. Denna metod är användbar för självsignerade certifikat:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&serverCertificate=/path/to/server.pem
Åsidosättande av värdnamn
Som standard validerar drivrutinen att certifikatets Common Name (CN) eller Subject Alternative Name (SAN) matchar serverns värdnamn. Använd hostnameincertificate för att åsidosätta det förväntade värdnamnet:
sqlserver://<user>:<password>@10.0.0.5:1433?database=AdventureWorks2025&encrypt=true&hostnameincertificate=<server>.domain.com
Hoppa över certifikatvalidering
Ställ TrustServerCertificate=true in att hoppa över all certifikatvalidering. Anslutningen är fortfarande krypterad, men serverns identitet är inte verifierad:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&TrustServerCertificate=true
Försiktighet
Inställning TrustServerCertificate=true exponerar kopplingen till attacker från motståndaren i mitten. Använd detta alternativ endast för utveckling och testning.
TDS 8.0 strikt läge
TDS 8.0 (strikt kryptering) utför TLS-handskakningen före någon TDS-protokollförhandling. Denna metod förhindrar att en angripare nedgraderar hela anslutningen. TDS 8.0 kräver SQL Server 2022 eller Azure SQL:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=strict
I strikt läge ignoreras parametern TrustServerCertificate . Certifikatvalidering sker alltid, med systemförtroendet som standard. Du kan ange certificate eller serverCertificate för anpassad validering.
Lägsta TLS-version
Använd parametern tlsmin för att upprätthålla en minimal TLS-version:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&tlsmin=1.2
Giltiga värden: 1.0, 1.1, 1.2, 1.3.
Sammanfattning av krypteringsparametrar
| Parameter | Standardinställning | Description |
|---|---|---|
encrypt |
false |
Krypteringsläge. Azure SQL kräver alltid kryptering på serversidan oavsett denna inställning. |
TrustServerCertificate |
Beror på encrypt |
Hoppa över certifikatvalidering när true. Standarden är false när encrypt anges och true när encrypt utelämnas. |
certificate |
- | PEM/DER-filväg för kedjevalidering. |
serverCertificate |
- | PEM/DER-filsökväg för bytenivåjämförelse. |
hostnameincertificate |
- | Åsidosätt förväntat värdnamn i certifikatet. |
tlsmin |
- | Minsta TLS-version. |