7 votes

Comment mettre à jour le serveur 5 vers TLS 1.2 ?

Dans la dernière version de l'application serveur d'Apple (version 5.0.4) fonctionnant sur El Capitan (10.11.2), les sites web SSL utilisent la version 1.0 de TLS. Mais, comme l'explique Ivan Ristic dit L'essentiel est que TLS 1.0 n'est pas sûr et que nous devons l'abandonner. Comment y parvenir avec Server 5 ?

3voto

CommaToast Points 709
  1. Aller à http://www.apple.com/feedback et envoyez des commentaires demandant qu'ils mettent à jour Server et OS X pour prendre en charge TLS 1.2. Il est ridicule qu'ils ne le fassent pas, surtout si l'on considère que dans iOS 9 et El Capitan, ils exigent que les développeurs d'Apple publient des logiciels qui ne communiquent qu'avec des serveurs TLS 1.2. Même si vous pouviez patcher Server pour qu'il fonctionne avec TLS 1.2, que se passera-t-il lorsqu'Apple mettra à nouveau à jour Server et que celui-ci ne prendra toujours pas en charge TLS 1.2 ? Lorsque vous installerez cette mise à jour, celle-ci écrasera-t-elle ce que vous avez mis en place ?

  2. En attendant, la seule véritable option dont vous disposez, je suppose, est d'installer OpenSSL 1.0.1 ou une version ultérieure, de télécharger le code source d'Apache, de le compiler en le liant à OpenSSL 1.0.1, puis de remplacer l'Apache d'OS X par celui que vous venez de compiler. Cela nécessitera très certainement de désactiver la protection de l'intégrité du système car vous ne pouvez pas modifier les fichiers centraux du système d'exploitation comme apache2. Vous pourrez peut-être vous en sortir en remplaçant simplement mod_ssl.so après avoir effectué votre compilation. Mais c'est ridicule de devoir en arriver là ! Il faut qu'Apple corrige ça ! (voir https://serverfault.com/questions/265556/upgrade-openssl-mod-ssl-on-mac-os-x-server )

  3. Téléchargez VirtualBox, installez CentOS ou une autre version de Linux dont la sécurité est renforcée, et faites tourner votre serveur à partir de ce système sur le Mac. Parce que, de toute évidence, Apple CBA peut mâcher du chewing-gum et marcher en même temps.

UPDATE :

Voici les étapes exactes que j'ai suivies pour faire fonctionner le point (2) ci-dessus.

Cela permet à OS X Server 5 de fonctionner avec TLS 1.2 et forward secrecy sur 10.11.1, ce qui rend ATS parfaitement heureux (surtout si vous êtes un développeur, c'est vraiment cool).

  1. Installer Homebrew et brew install openssl, brew install PCRE

  2. Télécharger les dernières sources d'Apache, apr, et apr-util

  3. Extraire les sources d'Apache dans /usr/local/src/httpd-2.4.17

  4. Extraire les archives apr et apr-util vers /usr/local/src/httpd-2.4.17/srclib/apr y /usr/local/src/httpd-2.4.17/srclib/apr-util

  5. Remplacer le caractère "+" par le mot "apache2" dans les fichiers config.layout à l'intérieur des répertoires apr et apr-util.

  6. Dans Terminal, exécutez les commandes suivantes :

    cd /usr/local/src/httpd-2.4.17
    CFLAGS="-arch x86_64"
    ./configure --prefix=/usr/local/apache-2.4.17 --with-included-apr --with-included-apr-util -with-mpm=prefork --with-ssl=/usr/local/opt/openssl --enable-mods-shared=reallyall --enable-layout=Darwin
    make
    make install
  7. Copiez mod_hfs_apple.so, mod_authnz_ldap.so, et mod_ldap.so de /usr/libexec en /usr/local/apache-2.4.17/libexec/apache2/

  8. Désactiver SIP : Redémarrer en mode de récupération (commande-R), ouvrir Terminal et taper csrutil disable . (Cela vous permet d'effectuer des modifications dans les répertoires /usr/sbin et /usr, nécessaires pour remplacer l'Apache par défaut non sécurisé par le nouvel Apache sécurisé que vous allez construire).

  9. Redémarrez en mode normal, ouvrez Terminal et tapez les commandes suivantes :

    sudo mv /usr/sbin/httpd /usr/sbin/httpd.old
    sudo mv /usr/libexec/apache2 /usr/libexec/apache2.old
    sudo ln -s /usr/local/apache-2.4.17/sbin/httpd /usr/sbin/httpd
    sudo ln -s /usr/local/apache-2.4.17/libexec/apache2/ /usr/libexec/apache2
  10. Réactiver SIP : redémarrer en mode récupération, ouvrir Terminal et taper csrutil enable .

  11. Redémarrez en mode normal et téléchargez la dernière source de PHP, puis extrayez-la vers /usr/local/src/php-5.6.16 (ou n'importe quelle version ; la 7.0 vient de sortir, woot, mais je ne sais pas si cela casserait l'utilisation de PHP par OS X Server)

  12. Configurez PHP avec la commande suivante (modifiez-la si nécessaire, mais elle a fonctionné pour ma pile LAMP avec OS X Server 5) :

    ln -s /usr/local/opt/openssl /usr/local/openssl
    cd /usr/local/src/php-5.6.16
    CFLAGS="-arch x86_64" 
    ./configure --with-openssl=/usr/local/opt/openssl --with-pcre-regex=/usr/local/opt/pcre --with-curl=/usr/bin/curl --enable-exif --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql --enable-opcache --with-apxs2=/usr/local/apache-2.4.17/bin/apxs --prefix=/usr/local/apache-2.4.17/php/ --enable-sockets --enable-zip --with-pear=/usr/local/apache-2.4.17/lib/php --enable-mbstring --with-mysqli
    make
    make install
  13. Dans un éditeur de texte, modifiez le fichier : /Library/Server/Web/Config/Proxy/servermgr_serviceproxy_customsites.plist À partir de la ligne 65, effectuez les modifications suivantes (lignes à supprimer , nouvelles lignes ):

    SSLCipherSuite "ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM"

    SSLCipherSuite "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS"

    SSLHonorCipherOrder Activé

    SSLProtocol -ALL +TLSv1

    SSLProtocol -SSLv2 -SSLv3

    SSLProxyProtocol -ALL +TLSv1

    SSLProxyProtocol -SSLv2 -SSLv3

  14. Ensuite, faites une modification similaire dans apache_serviceproxy_customsites.conf, en commençant à la ligne 13 (lignes à supprimer , nouvelles lignes ):

    SSLCipherSuite "ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM"

    SSLHonorCipherOrder Activé

    SSLCipherSuite "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS"

    SSLProtocol -ALL +TLSv1

    SSLProtocol ALL -SSLv2 -SSLv3

    SSLProxyProtocol -ALL +TLSv1

    SSLProxyProtocol ALL -SSLv2 -SSLv3

  15. Ensuite, effectuez exactement les mêmes modifications qu'à l'étape 14, dans apache_serviceproxy.conf, à partir de la ligne 198.

  16. Démarrez le serveur OS X et exécutez la commande suivante pour vérifier que vous avez réussi : /usr/bin/nscurl --ats-diagnostics https :// [[l'url https de votre site personnalisé]]. Note : l'URL devra évidemment être formatée correctement. J'ai mis un espace supplémentaire avant les deux points parce que sinon ce message sera envoyé à la modération.

Dans mon cas, TOUS les tests ont été réussis.

Je peux vous fournir un fichier patch git pour faire les changements dans vos fichiers .conf en supposant que vous avez toujours une installation vierge et que vous êtes sur la même version que moi.

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