Admito una aplicación .Net 4.0 WinForms local heredada. La aplicación utiliza System.Net.Mail.SmtpClient para enviar correos electrónicos a través de los propios servidores SMTP de nuestros clientes. Recientemente, hemos tenido problemas con Office 365 que requiere TLS 1.2. Habiendo leído que mientras esté instalado .Net 4.5, las aplicaciones .Net 4.0 pueden utilizar TLS 1.2, agregué esta línea:
System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; // 3072 = TLS 1.2Esto resolvió el problema de conectarse a Office 365, pero introdujo problemas al realizar conexiones no SMTP a otras aplicaciones de terceros más antiguas que no son compatibles con TLS 1.2. Por lo tanto, cambié el enfoque para agregar TLS 1.2 a la lista de protocolos permitidos en lugar de establecerlo como el protocolo obligatorio (como se describe en esta pregunta y esta pregunta ), y también agregué TLS 1.3 al mismo tiempo:
System.Net.ServicePointManager.SecurityProtocol |= (SecurityProtocolType)3072 | // 3072 = TLS 1.2 (SecurityProtocolType)12288; // 12288 = TLS 1.3Esto resolvió ambos problemas para algunos clientes y funciona en nuestro entorno de prueba con nuestra propia cuenta de Office 365. Sin embargo, algunos de nuestros clientes informaron problemas para conectarse nuevamente a Office 365. Volver a exigir TLS 1.2 nuevamente resuelve el problema de SMTP, pero reintrodujo el otro problema.
¿Es posible especificar el protocolo de seguridad para una conexión específica en lugar de adoptar este enfoque global?