Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O uso de MySqlConnection (.NET) para conexão SSL ao servidor MySql falha em determinados clientes


Eu mesmo encontrei a solução enquanto dissecava o protocolo TLS. Acontece que o cliente que não funciona no exemplo acima está enviando o meu certificado de cliente durante o handshake; e o cliente que faz trabalho não faz isso. Aparentemente, a criptografia é estabelecida de qualquer maneira (não continuei no protocolo TLS) e provavelmente uma troca de certificados/troca de chaves ocorre mais adiante.

Para que a conexão funcionasse, tudo o que eu precisava fazer era alterar a connectionstring e remover todas as chaves Certificate*=. Em particular "Local da Loja de Certificados=Usuário Atual". Minha cadeia de conexão SSL MySql atual e em funcionamento é:
server=xxx.yyy.zzz.uuu;database=whopper;user=Username;password=Secret;Pooling=false;SSL Mode=Required;Keepalive=60

Além disso, como uma nota lateral, ao dissecar a comunicação, descobri que o Tamos CommView faz um trabalho melhor do que o WireShark na interceptação e dissecação durante as comunicações VPN. Talvez devido à incapacidade do WinPCaps de dissecar pacotes VPN no Windows 7 x64. Além disso, o dissector TLS no CommView é o que realmente me ajudou a encontrar o problema do handshake.

Além disso, como uma segunda nota lateral. Todas as comunicações SSL/TLS no Windows são tratadas por uma DLL chamada schannel.dll. O log completo no System EventLog para essa dll pode ser habilitado criando o DWORD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\EventLogging com o valor 7. Leia mais aqui:http://support.microsoft.com/kb/260729 .

Para fazê-lo funcionar. Remova coisas.