Mysql
 sql >> Database >  >> RDS >> Mysql

L'utilizzo di MySqlConnection (.NET) per la connessione SSL a MySql-server non riesce da alcuni client

Ho trovato la soluzione da solo mentre analizzavo il protocollo TLS. Si scopre che il client che non funziona nell'esempio sopra sta inviando il certificato del mio client durante l'handshake; e il cliente che funziona non lo fa. Apparentemente la crittografia è comunque stabilita (non ho continuato nel protocollo TLS) e probabilmente uno scambio di certificati/chiavi avviene più avanti.

Per far funzionare la connessione, tutto ciò che dovevo fare era cambiare la connectionstring e rimuovere tutte le chiavi Certificate*=. In particolare "Certificate Store Location=CurrentUser". La mia stringa di connessione SSL MySql corrente e funzionante è:

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

Inoltre, come nota a margine, mentre analizzavo la comunicazione, ho scoperto che Tamos CommView fa un lavoro migliore di WireShark nell'intercettare e dissezionare durante le comunicazioni VPN. Forse a causa dell'impossibilità di WinPCap di sezionare i pacchetti VPN in Windows 7 x64. Anche il dissettore TLS in CommView è ciò che mi ha davvero aiutato a trovare il problema dell'handshaking.

Inoltre, come seconda nota a margine. Tutte le comunicazioni SSL/TLS in Windows sono gestite da una DLL denominata schannel.dll. L'accesso completo al registro eventi di sistema per quella dll può essere abilitato creando la DWORD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\EventLogging con il valore 7. Leggi di più qui:http://support.microsoft.com/kb/260729 .

Per farlo funzionare. Rimuovi le cose.