Why does SQLclient still allow an encrypted connection with a revoked cert?
Como muitas bibliotecas TLS fazem apenas uma verificação mínima dos certificados do servidor, seja por motivos de desempenho ou porque os desenvolvedores não veem a necessidade de implementar verificações melhores.
Nesse caso específico, o. Documentação de rede sugere quais verificações são realizadas:
SqlConnection.ConnectionString Property -->
Encrypt
Whentrue
, SQL Server uses SSL encryption for all data sent between the client and server if the server has a certificate installed. Recognised values aretrue
,false
,yes
, andno
. For more information, see Connection String Syntax.
Beginning in .NET Framework 4.5, whenTrustServerCertificate
isfalse
andEncrypt
istrue
, the server name (or IP address) in a SQL Server SSL certificate must exactly match the server name (or IP address) specified in the connection string. Otherwise, the connection attempt will fail.
Em outras palavras, a única verificação de segurança 1 que está sendo feita com a combinação de "encrypt = true; trustservercertificate = false" é ver se o nome do host do certificado corresponde ao nome do host do servidor tentando se conectar.
Não ficaria surpreso se usar um certificado de servidor TLS expirado também funcionasse sem falhas.
1 Bem, não exatamente a verificação , trustservercertificate=false
não aceitará certificados autoassinados para que o certificado ainda seja assinado por uma CA conhecida / confiável