3 votes

tlsv1 alerte sur la version du protocole lors de la connexion via SSL au serveur OS X

Comment puis-je réactiver TLS 1.1 et 1.0 sur le serveur 5.3 avec MacOS 10.12.4 à court terme pendant que j'évalue tous les clients qui ne sont pas prêts pour TLS 1.2 ?

Si vous passez au bas de la page, les tentatives de modification des fichiers de configuration ont échoué jusqu'à présent pour rétablir la rétrocompatibilité.

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

Après avoir mis à jour notre serveur vers MacOS 12.4 et l'application Serveur vers la version 5.3, en utilisant la fonction curl pour se connecter à un site https d'un serveur MacOS à partir d'une machine Linux a cessé de fonctionner, émettant les messages suivants du côté 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 connexion fonctionnait bien avant la mise à jour du serveur MacOS. Il semble donc que la mise à jour ait désactivé une option de connexion qui curl s'appuie sur. J'ai fait beaucoup de recherches sur Internet, mais je ne sais toujours pas quelle en est la cause exacte.

Le même curl fonctionne lorsqu'elle est émise depuis un autre Mac. La machine linux a

$ 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 

alors que sur le 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 

Malheureusement, ce n'est pas une option pour essayer de mettre à jour curl sur la machine Linux.

Certaines ressources affirment que des suites de chiffrement incompatibles en sont la cause, mais après quelques tests, je n'ai pas pu trouver de solution en utilisant la méthode de l'utilisateur. --ciphers et je ne sais pas non plus comment trouver une suite de chiffres compatible.

J'ai essayé de trouver ce qui a changé avec MacOS Server 5.3, mais le journal des modifications d'Apple ne me donne aucune indication à ce sujet. La question est donc la suivante :

Qu'est-ce qui a changé dans MacOS 12.4 et/ou MacOS Server 5.3 et comment puis-je re-configurer mon serveur MacOS pour que le système d'exploitation de l'entreprise soit plus efficace ? curl La connexion fonctionne à nouveau ?

Mise à jour 1 :

J'ai temporairement exposé le port 443 au public, afin de pouvoir effectuer la Tests SSL Labs . Les résultats montrent que mon serveur MacOS ne supporte que TLS 1.2 et plus rien d'autre. Pour plusieurs clients simulés, le rapport de test Server sent fatal alert: protocol_version - dont, par exemple, IE8-10/Win7 et Java7u25.

J'ai essayé de réactiver TLS 1 et 1.1 dans la base de données de l'entreprise.

  • /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 (plusieurs exemples ici)

en changeant

SSLProtocol -all +TLSv1.2

en

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

ou même

SSLProtocol All

mais cela n'a pas fait de différence lors de la récupération de l'URL avec curl .

Mise à jour 2 :

Le journal des erreurs du proxy de service montre

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

Pour moi, il semble que mes tentatives d'activer TLS v1 ne fonctionnent pas.

La question est donc la suivante : Comment puis-je réactiver TLS v1 dans MacOS Server Apache ?

3voto

Steffen Ullrich Points 171

curl 7.19.0 ... OpenSSL/0.9.8h

C'est une version très ancienne (et non supportée) d'OpenSSL que vous utilisez ici, qui ne prend pas en charge les protocoles modernes comme TLS 1.2 et les chiffres ECDHE modernes. Il y a de fortes chances qu'après la mise à jour, votre serveur exige désormais ce protocole et/ou ce chiffrement et que la connexion avec votre ancienne version d'OpenSSL échoue.

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

Cela peut également indiquer que votre client essaie d'utiliser SSL 3.0, qui est généralement désactivé aujourd'hui car il s'agit d'un protocole non sécurisé. Vous pouvez essayer d'imposer l'utilisation de TLS 1.0 (qui est pris en charge par OpenSSL 0.9.8) en utilisant la méthode suivante curl -1 o curl --tls1 dans l'espoir que le serveur prenne toujours en charge TLS 1.0 et que les chiffres soient configurés pour être utilisables par l'ancienne version d'OpenSSL.

0 votes

Curl 7.19 est peut-être vieux, mais il se connecte toujours bien avec tout autre https que j'ai essayé (google.com etc.). D'après les fichiers de configuration de httpd, le serveur MacOS supporte TLS 1, 1.1, et 1.2, mais l'utilisation de -1 avec curl n'aide pas. La sortie de curl trace ne semble pas être très utile. Avez-vous une autre idée pour trouver la cause des problèmes de connexion ?

0 votes

@not2savvy : regarder les messages de log sur le serveur pourrait aider puisque c'est le serveur qui envoie l'alerte TLS parce qu'il n'aime pas quelque chose que le client a envoyé. Si votre serveur est public, vous pouvez également le vérifier par rapport à SSLLabs qui montre également le comportement avec des clients ou des bibliothèques spécifiques.

0 votes

Il n'y a pas de message dans le journal d'apache. Le serveur n'est pas public. J'ai essayé openssl s_client -connect myserver.domain:443 à partir de mon Mac, mais il en résulte CONNECTED(00000003) 16140:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/Open‌​SSL098/OpenSSL098-64‌​.50.6/src/ssl/s23_li‌​b.c:185: . Et si j'ajoute -tls1 puis j'obtiens 31629:error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version:s3_pkt.c:1053:SSL alert number 70 en plus des messages ci-dessus.

1voto

not2savvy Points 1457

Afin de réactiver TLSv1 (ou d'autres protocoles), il est nécessaire de modifier la configuration du proxy dans le fichier /Library/Server/Web/config/proxy/apache_serviceproxy.conf en ajoutant le protocole requis au <VirtualHost *:443> comme suit :

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

D'après mes tests, SSLProxyProtocol ne doit pas être modifié. De même, les modifications apportées aux autres fichiers mentionnés dans la question n'ont pas d'effet, il n'est donc pas nécessaire de les toucher.

Caveat : La mise à jour de votre application serveur écrasera probablement toujours /Library/Server/Web/config/proxy/apache_serviceproxy.conf . Après une mise à niveau, vous devrez réappliquer la modification.


Note : J'ai essayé de déplacer les modifications dans un fichier de configuration personnalisé distinct. apache_serviceproxy_customsites_myserver.domain.conf ce qui devrait empêcher les mises à jour du serveur d'annuler ces modifications. En plus de cela, le changement de protocole pourrait être limité à un domaine spécifique. Mais cela n'a pas semblé fonctionner - je cherche encore pourquoi.


Afin de s'assurer que vos modifications sont utilisées, il semble nécessaire de redémarrer MacOS ( sudo shutdown -r ), pas seulement le serveur web ( sudo serveradmin stop/start web ) afin de redémarrer le service proxy.

Une vérification par le Test de serveur SSL Labs signale que les protocoles TLS 1.0, 1.1 et 1.2 sont désormais disponibles, mais pas les protocoles SSL 2 et 3.

-3voto

NEWB Points 1

Je dois également activer TLS 1.1 sur le serveur Sienna 5.3. Il y a quelques courriels qui ne passent pas à cause de cela.

/bibliothèque/serveur/web/config/apache2/sites/0000_127.0.0.1_34543_myserver.domain.conf

/bibliothèque/serveur/web/config/apache2/httpd.conf
LE FICHIER N'EST PAS SUR MON SERVEUR

/bibliothèque/serveur/web/config/apache2/httpd_server_app.conf
la modification (en gras) et le redémarrage n'ont rien donné

IfModule mod_ssl.c
SSLProtocol -all +TLSv1.1 +TLSv1.2 --DIDNT WORK
Protocole SSL Tous -- N'A PAS FONCTIONNÉ

/library/server/web/config/proxy/apache_serviceproxy.conf (plusieurs instances ici)

Désolé, je ne l'utilise pas correctement, mais j'espère que lorsque j'aurai terminé, ce sera une vraie réponse.

0 votes

Oui, voir ma réponse. Les fichiers que j'ai modifiés sont listés dans la question. Mais vous ne devriez pas créer de réponse si vous demandez en fait plus d'informations.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X