versione del protocollo di avviso tlsv1 durante la connessione tramite SSL a OS X Server

3

Come posso riattivare TLS 1.1 e 1.0 sul server 5.3 con macOS 10.12.4 a breve termine mentre valuto tutti i client che non sono pronti per TLS 1.2?

Se salti in fondo, i tentativi di modifica dei file di configurazione non sono riusciti finora a ripristinare la compatibilità all'indietro

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

Dopo aver aggiornato il nostro server a macOS 12.4 e l'app Server alla versione 5.3, utilizzando curl per connettersi a un sito https del server macOS da una macchina Linux è cessato di funzionare, inviando i seguenti messaggi sul lato client:

$ 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 connessione ha funzionato bene prima dell'aggiornamento del server macOS. Sembra quindi che l'aggiornamento abbia disattivato un'opzione di connessione su cui si basa curl . Ho cercato spesso su Google, ma sono ancora incerto su quale sia esattamente la causa.

Lo stesso comando curl funziona quando viene emesso da un altro Mac. La macchina Linux ha

$ 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 

mentre sul client 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 

Sfortunatamente, non è un'opzione per provare ad aggiornare curl sulla macchina Linux.

Alcune risorse richiedono la causa delle suite di crittografia incompatibili, ma dopo alcuni test, non sono stato in grado di trovare una soluzione utilizzando l'opzione --ciphers , e inoltre non sono sicuro di come trovare una suite di crittografia compatibile.

Ho provato a scoprire cosa è cambiato con macOS Server 5.3, ma il registro delle modifiche di Apple non mi dà alcun suggerimento. Quindi la domanda è:

Cosa è cambiato in macOS 12.4 e / o macOS Server 5.3 e come posso riconfigurare il mio server macOS in modo che la connessione curl funzioni di nuovo?

Aggiornamento 1:

Ho esposto temporaneamente la porta 443 al pubblico, così ho potuto eseguire i test Labs SSL . I risultati mostrano che il mio server macOS supporta solo TLS 1.2 e nient'altro. Per diversi client simulati, il rapporto di prova Server sent fatal alert: protocol_version - inclusi, ad esempio, IE8-10 / Win7 e Java7u25.

Ho provato a riattivare TLS 1 e 1.1 in

  • /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 (più istanze qui)

modifica

SSLProtocol -all +TLSv1.2

in

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

o anche

SSLProtocol All

ma non ha fatto la differenza quando recupera l'URL con curl .

Aggiornamento 2:

Il registro degli errori del proxy di servizio mostra

[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)

Per me, sembra che i miei tentativi di attivare TLS v1 non funzionino.

Quindi la domanda è: Come posso riattivare TLS v1 in macOS Server Apache?

    
posta not2savvy 09.04.2017 - 12:26
fonte

3 risposte

1

Per riattivare TLSv1 (o altri protocolli), è necessario modificare la configurazione del proxy in /Library/Server/Web/config/proxy/apache_serviceproxy.conf , aggiungendo il protocollo richiesto alla sezione <VirtualHost *:443> in questo modo:

<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>

Secondo i miei test, SSLProxyProtocol non ha bisogno di essere modificato. Inoltre, i cambiamenti negli altri file menzionati nella domanda non hanno effetto, quindi non devono essere toccati.

Avvertenza : l'aggiornamento dell'app Server probabilmente sovrascriverà sempre /Library/Server/Web/config/proxy/apache_serviceproxy.conf . Dopo un aggiornamento, dovrai riapplicare la modifica.

Nota: ho provato a spostare le modifiche in un file di configurazione personalizzato separato apache_serviceproxy_customsites_myserver.domain.conf , che dovrebbe impedire agli aggiornamenti del server di annullare queste modifiche. Oltre a ciò, la modifica del protocollo potrebbe essere limitata a un dominio specifico. Ma quello non sembrava funzionare - ancora indagando sul perché.

Per essere sicuri che le tue modifiche siano utilizzate, sembra che sia necessario riavviare macOS ( sudo shutdown -r ), non solo il server web ( sudo serveradmin stop/start web ) per riavviare il servizio proxy.

Una verifica del test del server SSL Lab riporta che TLS 1.0, 1.1 e 1.2 sono ora disponibili, mentre SSL 2 e 3 non lo sono.

    
risposta data 10.04.2017 - 17:33
fonte
3

curl 7.19.0 ... OpenSSL/0.9.8h

Questa è una versione molto vecchia (e non supportata) di OpenSSL che stai usando qui, che non supporta i protocolli moderni come TLS 1.2 e le moderne crittografie ECDHE. È probabile che dopo l'aggiornamento il server ora richieda tale protocollo e / o cifratura e quindi la connessione con la vecchia versione di OpenSSL fallirà.

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

Questo potrebbe anche indicare che il tuo client sta tentando di utilizzare SSL 3.0, che di solito è disabilitato oggi perché è un protocollo non sicuro. Si potrebbe provare ad applicare TLS 1.0 (che è supportato da OpenSSL 0.9.8) utilizzando curl -1 o curl --tls1 nella speranza che il server supporti ancora TLS 1.0 e ha crittografie configurate per essere utilizzabili dalla vecchia versione di OpenSSL .

    
risposta data 09.04.2017 - 13:15
fonte
-3

Devo anche abilitare TLS 1.1 su Sienna Server 5.3 Ci sono alcune email che non riescono a passare a causa di esso.

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

/library/server/web/config/apache2/httpd.conf
FILE NON SU MY SERVER

/library/server/web/config/apache2/httpd_server_app.conf
modifica (in grassetto) e il riavvio non ha fatto nulla

IfModule mod_ssl.c
SSLProtocol -all +TLSv1.1 +TLSv1.2 --DIDNT WORK
SSLProtocol All --DIDNT WORK

/library/server/web/config/proxy/apache_serviceproxy.conf (più istanze qui)

scusa se non lo sto usando bene, ma spero che quando avrò finito sarà una risposta reale

    
risposta data 04.05.2017 - 17:16
fonte

Leggi altre domande sui tag