sql >> Databasteknik >  >> RDS >> Mysql

Att använda MySqlConnection (.NET) för att SSL-ansluta till MySql-server misslyckas från vissa klienter

Jag hittade lösningen själv när jag dissekerade TLS-protokollet. Det visar sig att klienten som inte fungerar i exemplet ovan skickar mitt klientcertifikat under handskakning; och klienten som fungerar gör inte det. Tydligen är kryptering etablerad ändå (jag har inte fortsatt in i TLS-protokollet), och förmodligen sker ett certifikatutbyte/nyckelutbyte längre fram.

För att få anslutningen att fungera behövde jag bara ändra anslutningssträngen och ta bort alla Certificate*=-nycklar. I synnerhet "Certificate Store Location=CurrentUser". Min nuvarande, fungerande MySql SSL-anslutningssträng är:

server=xxx.yyy.zzz.uuu;database=whopper;user=Username;password=Secret;Pooling=false;SSL Mode=Required;Keepalive=60

Som en sidoanteckning, när jag dissekerade kommunikationen, fann jag att Tamos CommView gör ett bättre jobb än WireShark när det gäller att avlyssna och dissekera under VPN-kommunikation. Kanske på grund av WinPCaps oförmåga att dissekera VPN-paket under Windows 7 x64. TLS-dissektorn i CommView är också det som verkligen hjälpte mig att hitta problemet med handskakning.

Också som en andra sidoanteckning. All SSL/TLS-kommunikation i Windows hanteras av en DLL som heter schannel.dll. Full inloggning i System EventLog för den dll-filen kan aktiveras genom att skapa DWORD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\EventLogging med värdet 7. Läs mer här:http://support.microsoft.com/kb/260729 .

För att få det att fungera. Ta bort saker.




  1. SQL INSERT...SELECT med automatisk ökning av DATETIME

  2. Skicka HTML-e-postresultat i e-post som visar HTML-källa (Codeginiter Email Class)

  3. Gruppera endast efter datum i kolumnen Datetime

  4. Dela upp data i kolumner i mysql