versión del protocolo de alerta tlsv1 cuando se conecta a través de SSL al servidor OS X

3

¿Cómo puedo volver a habilitar TLS 1.1 y 1.0 en el servidor 5.3 con macOS 10.12.4 a corto plazo mientras evalúo a todos los clientes que no están listos para TLS 1.2?

Si salta al final, los intentos de cambiar los archivos de configuración han fallado hasta ahora para restaurar la compatibilidad hacia atrás

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

Después de haber actualizado nuestro servidor a macOS 12.4 y la aplicación Servidor a la versión 5.3, usando curl para conectarse a un servidor del servidor macOS https desde una máquina Linux dejó de funcionar, emitiendo los siguientes mensajes en el lado del cliente:

$ curl -v --insecure -o "output.file" https://myserver.domain/path/page.php
* About to connect() to myserver.domain port 443 (#0)
*   Trying 192.168.xxx.xxx... connected
* Connected to myserver.domain (192.168.xxx.xxx) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs/
* SSLv3, TLS handshake, Client hello (1):
} [data not shown]
* error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
* Closing connection #0

La conexión funcionó bien antes de la actualización del servidor macOS. Así que parece que la actualización desactivó una opción de conexión en la que se basa curl . Busqué mucho en Google, pero todavía no estoy seguro de cuál es exactamente la causa.

El mismo comando curl funciona cuando se emite desde otra Mac. La máquina linux tiene

$ curl --version
curl 7.19.0 (x86_64-suse-linux-gnu) libcurl/7.19.0 OpenSSL/0.9.8h zlib/1.2.3 libidn/1.10
Protocols: tftp ftp telnet dict ldap http file https ftps 
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz 

mientras esté en el cliente Mac

$ curl --version
curl 7.51.0 (x86_64-apple-darwin16.0) libcurl/7.51.0 SecureTransport zlib/1.2.8
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets 

Lamentablemente, no es una opción intentar actualizar curl en la máquina con Linux.

Algunos recursos afirman que las suites de cifrado incompatibles son la causa, pero después de algunas pruebas, no he podido encontrar una solución con la opción --ciphers , y tampoco estoy seguro de cómo encontrar un conjunto de cifrado compatible.

He intentado averiguar qué ha cambiado con macOS Server 5.3, pero el registro de cambios de Apple no me da ninguna pista al respecto. Así que la pregunta es:

¿Qué ha cambiado en macOS 12.4 y / o macOS Server 5.3 y cómo puedo volver a configurar mi servidor macOS para que la conexión curl funcione de nuevo?

Actualización 1:

He expuesto temporalmente el puerto 443 al público, por lo que podría realizar las pruebas de SSL Labs . Los resultados muestran que mi servidor macOS solo admite TLS 1.2 y nada más. Para varios clientes simulados, el informe de prueba Server sent fatal alert: protocol_version , incluidos, por ejemplo, IE8-10 / Win7 y Java7u25.

He intentado reactivar TLS 1 y 1.1 en

  • /library/server/web/config/apache2/sites/0000_127.0.0.1_34543_myserver.domain.conf
  • /library/server/web/config/apache2/httpd.conf
  • /library/server/web/config/apache2/httpd_server_app.conf
  • /library/server/web/config/proxy/apache_serviceproxy.conf (varias instancias aquí)

cambiando

SSLProtocol -all +TLSv1.2

en

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

o incluso

SSLProtocol All

pero no hizo una diferencia al obtener la URL con curl .

Actualización 2:

El registro de errores del proxy de servicio muestra

[datetime] [ssl:info] [pid n] [client x.x.x.x:38805] AH02008: SSL library error 1 in handshake (server myserver.domain:443)
[datetime] [ssl:info] [pid n] SSL Library Error: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number
[datetime] [ssl:info] [pid n] [client x.x.x.x:38805] AH01998: Connection closed to child 11 with abortive shutdown (server myserver.domain:443)

Para mí, parece que mis intentos de activar TLS v1 no funcionan.

Entonces, la pregunta es: ¿Cómo puedo reactivar TLS v1 en el servidor Apache de macOS?

    
pregunta not2savvy 09.04.2017 - 12:26

3 respuestas

1

Para volver a habilitar TLSv1 (u otros protocolos), se requiere modificar la configuración del proxy en /Library/Server/Web/config/proxy/apache_serviceproxy.conf , agregando el protocolo requerido a la sección <VirtualHost *:443> de esta manera:

<VirtualHost *:443>
  ProxyPreserveHost On
 SetEnv proxy-chain-auth on
 RequestHeader set X-Forwarded-Proto "https"
 RequestHeader set X-Forwarded-Port "443"
 RequestHeader unset Proxy early
 <IfModule mod_ssl.c>
   SSLEngine On
   SSLCertificateFile "/etc/certificates/${CERT_ID}.cert.pem"
   SSLCertificateKeyFile "/etc/certificates/${CERT_ID}.key.pem"
   SSLCertificateChainFile "/etc/certificates/${CERT_ID}.chain.pem"
   SSLCipherSuite "HIGH:MEDIUM:!MD5:!RC4:!3DES"
   SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
   SSLProxyEngine On
   SSLProxyProtocol -all +TLSv1.2
   SSLProxyCheckPeerCN off
   SSLProxyCheckPeerName off
 </IfModule>
 [...]
</VirtualHost>

De acuerdo con mis pruebas, SSLProxyProtocol no necesita ser modificado. Además, los cambios en los otros archivos mencionados en la pregunta no tienen efecto, por lo que no es necesario tocarlos.

Advertencia: la actualización de la aplicación de su servidor probablemente siempre sobrescribirá /Library/Server/Web/config/proxy/apache_serviceproxy.conf . Después de una actualización, tendrá que volver a aplicar la modificación.

Nota: he intentado mover los cambios a un archivo de configuración personalizado separado apache_serviceproxy_customsites_myserver.domain.conf , lo que debería impedir que las actualizaciones del servidor reviertan estas modificaciones. Además de eso, el cambio de protocolo podría limitarse a un dominio específico. Pero eso no pareció funcionar, aún investigando por qué.

Para asegurarse de que se usan sus modificaciones, parece ser necesario reiniciar macOS ( sudo shutdown -r ), no solo el servidor web ( sudo serveradmin stop/start web ) para reiniciar el servicio proxy.

Una verificación realizada por la prueba del servidor SSL Labs informa que TLS 1.0, 1.1 y 1.2 ya están disponibles, mientras que SSL 2 y 3 no lo son.

    
respondido por el not2savvy 10.04.2017 - 17:33
3
  

curl 7.19.0 ... OpenSSL / 0.9.8h

Esta es una versión muy antigua (y no compatible) de OpenSSL que está utilizando aquí, que no admite los protocolos modernos como TLS 1.2 y los cifrados ECDHE modernos. Hay muchas posibilidades de que después de la actualización, su servidor ahora requiera dicho protocolo y / o cifrado y, por lo tanto, la conexión con su antigua versión de OpenSSL fracasará.

  

* SSLv3, TLS handshake, Client hello (1):

Esto también podría indicar que su cliente está tratando de usar SSL 3.0, que generalmente está deshabilitado hoy porque es un protocolo inseguro. Puede intentar imponer el uso de TLS 1.0 (que es compatible con OpenSSL 0.9.8) usando curl -1 o curl --tls1 con la esperanza de que el servidor aún admita TLS 1.0 y que los cifrados estén configurados para ser utilizados por la versión anterior de OpenSSL. .

    
respondido por el Steffen Ullrich 09.04.2017 - 13:15
-3

También necesito habilitar TLS 1.1 en Sienna Server 5.3 Hay algunos correos electrónicos que no están llegando debido a eso.

/library/server/web/config/apache2/sites/0000_127.0.0.1_34543_myserver.domain.conf

/library/server/web/config/apache2/httpd.conf
ARCHIVO NO EN MI SERVIDOR

/library/server/web/config/apache2/httpd_server_app.conf
La edición (en negrita) y el reinicio no hicieron nada

  

IfModule mod_ssl.c
  SSLProtocol -todos + TLSv1.1 + TLSv1.2 --DIDNT WORK
  SSLProtocol Todos --DIDNT WORK

/library/server/web/config/proxy/apache_serviceproxy.conf (varias instancias aquí)

lo siento, no estoy usando este derecho, pero espero que cuando termine sea una respuesta real

    
respondido por el NEWB 04.05.2017 - 17:16

Lea otras preguntas en las etiquetas