Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not
Bu makale, ağ izlemelerini alma ve okuma konusunda bilgi sahibi olan kişilere yöneliktir.
Belirtiler
İstemciniz sunucu sertifikasını doğrulayamazsa, istemci uygulamasında aşağıdaki hata iletisini görürsünüz:
System.Data.SqlClient.SqlException:
A connection was successfully established with the server, but then an error occurred during the login process.
(provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.)
---> System.ComponentModel.Win32Exception: The certificate chain was issued by an authority that is not trusted
Ağ izleme örneği
Frame Date and Time Source IP Dest IP Description
----- ------------------- ----------- ----------- -----------------------------------------------------------------------------------
590 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TCP:Flags=CE....S., SrcPort=56277, DstPort=1433, PayloadLen=0,
593 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TCP:Flags=.E.A..S., SrcPort=1433, DstPort=56277, PayloadLen=0,
596 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TCP:Flags=...A...., SrcPort=56277, DstPort=1433, PayloadLen=0,
599 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TDS:Prelogin, Flags=...AP..., SrcPort=56277, DstPort=1433, PayloadLen=104,
602 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TDS:Response
605 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TLS:TLS Rec Layer-1 HandShake: Client Hello.
614 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TCP:Flags=...A...., SrcPort=1433, DstPort=56277, PayloadLen=0,
617 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Key Exchange. Server Hello Done.
686 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TCP:Flags=...A...F, SrcPort=56277, DstPort=1433, PayloadLen=0,
710 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TCP:Flags=...A...., SrcPort=1433, DstPort=56277, PayloadLen=0,
713 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TCP:Flags=...A...F, SrcPort=1433, DstPort=56277, PayloadLen=0,
719 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TCP:Flags=...A...., SrcPort=56277, DstPort=1433, PayloadLen=0,
Açıklamaları içeren ağ izleme örneği
Frame Date and Time Source IP Dest IP Description
----- ------------------- ----------- ----------- -----------------------------------------------------------------------------------
TCP 3-way handshake establishes a basic TCP connection.
590 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TCP:Flags=CE....S., SrcPort=56277, DstPort=1433, PayloadLen=0,
593 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TCP:Flags=.E.A..S., SrcPort=1433, DstPort=56277, PayloadLen=0,
596 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TCP:Flags=...A...., SrcPort=56277, DstPort=1433, PayloadLen=0,
The PreLogin packet from the client indicates data encryption is required. This also implies the client will try to validate the certificate.
599 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TDS:Prelogin, Flags=...AP..., SrcPort=56277, DstPort=1433, PayloadLen=104,
- Tds: Prelogin
+ PacketHeader: SPID = 0, Size = 104, PacketID = 1, Window = 0
- PreLoginPacketData:
- PreloginOptions:
+ PreloginOptionTokens:
- PreloginOptionData:
+ VersionData:
- EncryptionData:
Encryption: ENCRYPT_ON 1 (0x1) <----- Data Encryption is Requested by the client
+ InstOptData:
+ ThreadIDData:
+ MARSData:
+ TRACEIDLengthData:
+ FederatedLengthData:
602 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TDS:Response
The SSL/TLS handshake results in the server sending a certificate to the client.
For data encryption, the client tries to validate the certificate after receiving frame 617 (Server Hello).
605 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TLS:TLS Rec Layer-1 HandShake: Client Hello.
614 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TCP:Flags=...A...., SrcPort=1433, DstPort=56277, PayloadLen=0,
617 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Key Exchange. Server Hello Done.
- TLS: TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Key Exchange. Server Hello Done.
- TlsRecordLayer: TLS Rec Layer-1 HandShake:
ContentType: HandShake:
+ Version: TLS 1.2
Length: 847 (0x34F)
- SSLHandshake: SSL HandShake Server Hello Done(0x0E)
HandShakeType: ServerHello(0x02)
Length: 81 (0x51)
+ ServerHello: 0x1
HandShakeType: Certificate(0x0B)
Length: 517 (0x205)
- Cert: 0x1
CertLength: 514 (0x202)
- Certificates:
CertificateLength: 511 (0x1FF)
+ X509Cert: Issuer: SSL_Self_Signed_Fallback, Subject: SSL_Self_Signed_Fallback <---- this is SQL Server's Self-Generated Certificate
HandShakeType: Server Key Exchange(0x0C)
Length: 233 (0xE9)
ServerKeyExchange: Binary Large Object (233 Bytes)
HandShakeType: Server Hello Done(0x0E)
Length: 0 (0x0)
The certificate is an SSL_Self_Signed_Fallback certificate, which means that it cannot be validated.
The client terminates the connection.
686 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TCP:Flags=...A...F, SrcPort=56277, DstPort=1433, PayloadLen=0,
710 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TCP:Flags=...A...., SrcPort=1433, DstPort=56277, PayloadLen=0,
713 8:34:51 AM 3/9/2022 10.10.10.20 10.10.10.10 TCP:Flags=...A...F, SrcPort=1433, DstPort=56277, PayloadLen=0,
719 8:34:51 AM 3/9/2022 10.10.10.10 10.10.10.20 TCP:Flags=...A...., SrcPort=56277, DstPort=1433, PayloadLen=0,
Not
Bu örnekte SQL Server'ın kendi kendine oluşturulan bir sertifika kullandığı gösterilmektedir, ancak herhangi bir nedenle istemci tarafından güvenilmemesi durumunda herhangi bir sertifika Sunucu Hello paketinde olabilir.
Açıklama
İstemci ve sunucu arasındaki iletişim akışını anlamak için ağ izlemesini denetleyin.
- Çerçeve 590 - 599: Veri şifrelemesi gerektiğini belirten TCP el sıkışması ve PreLogin paketi.
- Çerçeve 605 - 617: Sunucu Sertifikasını gönderen Sunucu Hello ile TLS el sıkışması.
- Çerçeve 686 - 719: Sertifika doğrulama hatası nedeniyle bağlantı sonlandırılma.
İstemci, sunucu sertifikasının doğrulanması tetikleyen veri şifrelemesi istemektedir. Ancak, sunucu otomatik olarak imzalanan bir sertifika ()SSL_Self_Signed_Fallback göndererek yanıt verir ve bu da doğrulamanın başarısız olmasına neden olur.
İstemci veri şifrelemesi (Encrypt=yes veya Use Encryption for Data=True) istediğinde veya sunucu veri şifrelemesi gerektirdiğinde (Force Encryption=Yes yalnızca daha yeni sürücüler için), istemci sürücüsü sunucu sertifikasını doğrulamaya çalışır.
Not
Şifreleme istenmezse, PreLogin paketi yine de şifrelenir, ancak sertifika doğrulanmaz.
Sunucu sertifikasını doğrulamak için, istemcinin bilgisayar sertifika deposu sunucu sertifikasının bir kopyasını, güvenilen bir kök sertifikayı veya güvenilen bir ara sertifikayı içermelidir.
Bir üçüncü taraf sertifika yetkilisinden (CA) sertifika satın aldığınızda, Windows genellikle kök sertifikayla önceden yüklenmiş olarak gelir ve hiçbir şey yapmanız gerekmez.
Şirketinizin CA'sı varsa kök veya ara sertifikaları Grup İlkesi aracılığıyla göndermeniz veya el ile eklemeniz gerekir.
Otomatik olarak imzalanan bir sertifikanız varsa ve sertifikaya ihtiyaç duyan istemci sayısı azsa, genellikle el ile eklemeniz gerekir. Ancak, istemci sayısı büyükse, sertifikayı dağıtmak için Grup İlkesi'ni kullanabilirsiniz. Güvenlik için Özel Anahtar olmadan SQL Server'dan dışarı aktarın.
SQL Server bir sertifika kullanmıyorsa kendisi için bir sertifika oluşturur.
Risk azaltma
Kısa vadeli azaltma: uygulamanın bağlantı dizesi ayarlanırTrustServerCertificate=Yes.
Uzun vadeli risk azaltma: Sunucu için bir sertifika satın alın veya oluşturun.