
Desde la nueva actualización de Debian Buster, tengo algunos problemas con TLSv1.3.
Problema: mi cliente de correo iOS no pudo conectarse a mi servidor de correo (12.2) y no quiero actualizar en este momento, así que trato de encontrar una manera de desactivar TLSv1.3 con dovecot.
Las versiones actuales son: OpenSSL 1.1.1c y Dovecot 2.3.4.1
En Dovecot 2.3, la configuración de SSL se cambia de ssl_protocols a ssl_min_protocol.
# Minimum SSL protocol version to use. Potentially recognized values are SSLv3,
# TLSv1, TLSv1.1, and TLSv1.2, depending on the OpenSSL version used.
Pero me gustaría obligar a Dovecot a usar TLSv1.2 en lugar de usar un protocolo SSL mínimo, porque Dovecot intentará primero el protocolo SSL más alto disponible (TLSv1.3). Si configuro TLSv1.3, no usará TLSv1.2.
Entonces, ¿alguien sabe cómo forzar a Dovecot 2.3.4.1 a usar TLSv1.2?
Respuesta1
No es una respuesta completa, pero tal vez sea parte de una solución:
1. Probé la solución sugerida por @joffrey, pero no pude hacerla funcionar. ssl_cipher_list
Dovecot 2.3.4.1 parece ignorar por completo la habilitación o deshabilitación de los conjuntos de cifrado TLSv1.3 . Tampoco
ssl_prefer_server_ciphers
tiene ningún efecto en TLSv1.3. No importa qué configuración de Dovecot probé, no pude evitar que un cliente negociara TLSv1.3 y eligiera cualquier conjunto de cifrado TLSv1.3 que quisiera.
Probablemente esto esté relacionado con la introducción en OpenSSL 1.1.1 de un nuevo método para seleccionar conjuntos de cifrado TLSv1.3, además del método ya existente para seleccionar cifrados para TLSv1.2 e inferiores. Los desarrolladores de OpenSSL eran conscientes de los inconvenientes que esto causaría, pero dijeron que era inevitable, consulte
https://github.com/openssl/openssl/pull/5392. compromiso de palomar
8f6f04eb
parece sentar las bases para una nueva opción de Dovecot que probablemente se nombrará ssl_ciphersuites
como interfaz para el nuevo método OpenSSL para TLSv1.3, también además del existente ssl_cipher_list
para TLSv1.2 e inferiores. Esta confirmación se incluyó por primera vez en Dovecot 2.3.9, pero esa versión aún no se ha empaquetado para Debian. Además, no veo la opción mencionada en Dovecot.
NOTICIASo documentación en línea, por lo que tal vez aún no estén terminados.
2. Alternativamente, descubrí que agregar MaxProtocol = TLSv1.2
a
/etc/ssl/openssl.cnf
funciona (advertencia: ¡esto también cambiará el comportamiento de muchos otros programas que usan OpenSSL!):
[system_default_sect]
MinProtocol = TLSv1.2
MaxProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2
Esto impide inmediatamente que Dovecot 2.3.4.1 negocie TLSv1.3. Ni siquiera es necesario reiniciarlo. Pero, como se advirtió anteriormente, esta solución también afecta a otras aplicaciones, no sólo a Dovecot, por lo que es de uso limitado.
En un intento de orientar la configuración exclusivamente a Dovecot, intenté configurar una variable de entorno para que apunte a un archivo de configuración específico:
# OPENSSL_CONF=/etc/ssl/openssl-max-tlsv12.cnf dovecot -F
Pero eso no tuvo ningún efecto en Dovecot. Verifiqué que la variable fuera visible en el entorno y que funcionara para otras aplicaciones OpenSSL. Sin embargo, sospecho que la biblioteca OpenSSL en sí no analiza las variables de entorno y que se considera responsabilidad del programa que realiza la llamada (Dovecot) pasar de alguna manera el contenido de la variable a la biblioteca. Dudo que Dovecot haga esto, porque no veo ningún uso de la biblioteca OpenSSL CONF en el código fuente de Dovecot. Tampoco pude hacer funcionar una sección de la aplicación Dovecot en el archivo de configuración de OpenSSL, ni encontré ninguna opción de Dovecot para configurar una ubicación del archivo de configuración de OpenSSL o el nombre de la sección de la aplicación que se usará desde el archivo de configuración de OpenSSL. ¿Quizás alguien más sepa cómo orientar la configuración de OpenSSL a un programa específico en lugar de a todo el sistema?
3. Finalmente, siempre puedes intentar editar el código fuente, por supuesto. Para el paquete actual de Debian dovecot, puede comenzar duplicando
esta línea, cambie SSL_CTX_set_min_proto_version
a
SSL_CTX_set_max_proto_version
y luego vuelva a compilar. Realmente yo tampoco quería llegar tan lejos. Entonces también podrías comenzar a usar upstream directamente en lugar del paquete de distribución.
Respuesta2
Primero, debe ubicar el archivo 10-ssl.conf (generalmente en /etc/dovecot/conf.d/).
Edite y vaya a la línea que contieneprotocolos_ssl(la mía es la línea 52). En esa línea también se pueden negar protocolos. Puedes probar
ssl_protocols = TLSv1.2 !TLSv1.3
Respuesta3
No lo he probado ni reproducido, pero puedes intentar configurar elprotocolo_ssl_mina TLSv1.2 y definirlista_cifrado_sslpara no incluir ningunacifrados TLS1.3 específicos.
Respuesta4
Puede utilizar este fragmento de configuración, ubicado en local.conf o conf.d/10-ssl.conf
# doveconf -n | grep -iE "tls|ssl"
ssl = required
ssl_ca = </path/to/ca/bundle.pem
ssl_cert = </path/to/cert.pem
ssl_cipher_list = ALL:!RSA:!CAMELLIA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SHA1:!SHA256:!SHA384:!LOW@STRENGTH
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_min_protocol = TLSv1.2
ssl_prefer_server_ciphers = yes