¿Cómo actualizar el Servidor 5 a TLS 1.2?

En la última versión de la aplicación Server de Apple, versión 5.0.4, que se ejecuta en El Capitan (10.11.2), los sitios web SSL usan la versión 1.0 de TLS. Pero, como dice un tal Ivan Ristic , "La conclusión es que TLS 1.0 es inseguro y debemos migrar lejos de él". ¿Cómo lograr eso con Server 5?

Mi pregunta ahora está obsoleta, porque el último servidor 5.1 (en El Capitan 10.11.4) es totalmente compatible con TLS 1.2, por fin.
Cómo obligar a mac os x server 5.2 a usar solo TLS 1.2 puede ser relevante en este contexto.

Respuestas (1)

  1. Vaya a http://www.apple.com/feedback y envíe comentarios solicitando que actualicen Server y OS X para admitir TLS 1.2. Es ridículo que no lo hagan, especialmente considerando que en iOS 9 y El Capitan requieren que los desarrolladores de Apple lancen software que solo se comunique con los servidores TLS 1.2. Incluso si pudiera parchear el servidor para que funcione con TLS 1.2, ¿qué sucede cuando Apple actualiza el servidor nuevamente y aún no es compatible con TLS 1.2? Cuando instale esa actualización, ¿sobrescribirá lo que haya puesto en su lugar?

  2. Mientras tanto, supongo que la única opción real que tiene es instalar OpenSSL 1.0.1 o posterior, descargar el código fuente de Apache y luego construirlo vinculándolo con OpenSSL 1.0.1, y luego reemplazar el Apache de OS X con el uno que acabas de construir. Es casi seguro que eso requerirá deshabilitar la Protección de integridad del sistema porque no puede modificar los archivos centrales del sistema operativo como apache2. Es posible que pueda salirse con la suya simplemente cambiando mod_ssl.so después de hacer su compilación. ¡Pero es ridículo que tengamos que recurrir a esto! Apple necesita arreglar esto!!! (ver https://serverfault.com/questions/265556/upgrade-openssl-mod-ssl-on-mac-os-x-server )

  3. Descargue VirtualBox e instale CentOS u otra versión de Linux con seguridad mejorada, y simplemente ejecute su servidor en la Mac. Porque, evidentemente, Apple cba para masticar chicle y caminar al mismo tiempo.

ACTUALIZAR:

Estos son los pasos exactos que hice para que (2.) arriba funcione.

Esto hace que OS X Server 5 funcione con TLS 1.2 y reenvíe el secreto en 10.11.1, lo que hace que ATS esté perfectamente feliz (especialmente si eres un desarrollador, esto es realmente genial).

  1. Instale Homebrew y brew instale openssl, brew instale PCRE
  2. Descargue la última fuente de Apache, apr y apr-util
  3. Extraiga la fuente de Apache en /usr/local/src/httpd-2.4.17
  4. Extraiga los archivos apr y apr-util a /usr/local/src/httpd-2.4.17/srclib/apr y /usr/local/src/httpd-2.4.17/srclib/apr-util
  5. Reemplace el carácter "+" con la palabra "apache2" en los archivos config.layout dentro de los directorios apr y apr-util
  6. En Terminal, ejecuta los siguientes comandos:

    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. Copie mod_hfs_apple.so, mod_authnz_ldap.so y mod_ldap.so de /usr/libexec a /usr/local/apache-2.4.17/libexec/apache2/

  8. Deshabilite SIP: reinicie en el modo de recuperación (comando-R), abra la terminal y escriba csrutil disable. (Esto le permite realizar cambios dentro de los directorios /usr/sbin y /usr, necesarios para cambiar el Apache predeterminado inseguro por el nuevo seguro que construirá).
  9. Reinicie de nuevo al modo normal, abra la Terminal y escriba los siguientes comandos:

    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. Vuelva a habilitar SIP: reinicie en modo Recuperación, abra Terminal y escriba csrutil enable.
  11. Reinicie de nuevo en modo normal y descargue la última fuente de PHP, luego extráigala a /usr/local/src/php-5.6.16 (o cualquier versión; 7.0 acaba de salir, woot, pero no sé si lo haría romper los propios usos de PHP de OS X Server)
  12. Configure PHP con el siguiente comando (modifique según sea necesario, pero esto funcionó para mi pila LAMP con 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. En un editor de texto, edite el archivo: /Library/Server/Web/Config/Proxy/servermgr_serviceproxy_customsites.plist Comenzando en la línea 65, realice estos cambios (líneas para eliminar , líneas nuevas ):

    SSLCipherSuite "TODOS:!aNULL:!ADH:!eNULL:!BAJO:!EXP:RC4+RSA:+ALTO:+MEDIO"

    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"

    SSLHonorCipherPedido en

    Protocolo SSL -TODOS +TLSv1

    Protocolo SSL -SSLv2 -SSLv3

    SSLProxyProtocol -TODOS +TLSv1

    SSLProxyProtocolo -SSLv2 -SSLv3

  14. A continuación, realice un cambio similar en apache_serviceproxy_customsites.conf, comenzando en la línea 13 (líneas para eliminar , líneas nuevas ):

    SSLCipherSuite "TODOS:!aNULL:!ADH:!eNULL:!BAJO:!EXP:RC4+RSA:+ALTO:+MEDIO"

    SSLHonorCipherPedido en

    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"

    Protocolo SSL -TODOS +TLSv1

    Protocolo SSL TODO -SSLv2 -SSLv3

    SSLProxyProtocol -TODOS +TLSv1

    SSLProxyProtocolo TODO -SSLv2 -SSLv3

  15. A continuación, realice exactamente los mismos cambios que en el paso 14, en apache_serviceproxy.conf, comenzando en la línea 198.

  16. Inicie el servidor OS X y ejecute el siguiente comando para verificar que lo haya logrado: /usr/bin/nscurl --ats-diagnostics https :// [[la url https de su sitio personalizado]] Nota: la URL obviamente deberá formatearse adecuadamente. Dejo un espacio adicional antes de los dos puntos porque, de lo contrario, esta publicación se envía a moderación.

En mi caso, TODAS las pruebas regresaron con un "APROBADO".

Puedo proporcionarle un archivo de parche de git para realizar los cambios en sus archivos .conf, suponiendo que todavía tenga una instalación virgen y esté en la misma versión que yo.