Protección de la red en Oracle® Solaris 11.2

Salir de la Vista de impresión

Actualización: Septiembre de 2014
 
 

Cómo configurar el Proxy SSL en el nivel del núcleo para recurrir al SSL de Apache 2.2

En este procedimiento, debe configurar un servidor web Apache 2.2 desde cero y configurar el Proxy SSL en el nivel del núcleo como el mecanismo principal de control de sesiones SSL. Cuando el conjunto de cifrados SSL que ofrece el cliente no incluye un cifrado que ofrece el Proxy SSL en el nivel del núcleo, el servidor web Apache 2.2 sirve como un mecanismo de reserva. Este procedimiento implementa el escenario complejo que se muestra en la Figure 3–2.

Antes de empezar

Debe asumir el rol root. Para obtener más información, consulte Uso de sus derechos administrativos asignados de Protección de los usuarios y los procesos en Oracle Solaris 11.2 .

  1. En el servidor web Apache 2.2, cree un certificado de claves que utilizará el Proxy SSL en el nivel del núcleo del servidor.
    1. Generar una solicitud de firma de certificado (CSR).

      El siguiente comando genera una CSR y la clave privada asociada para el Proxy SSL en el nivel del núcleo:

      # cd /root
      # openssl req \
      > -x509 -new \
      > -subj "/C=CZ/ST=Prague region/L=Prague/CN=`hostname`" \
      > -newkey rsa:2048 -keyout webkey.pem \
      > -out webcert.pem
      Generating a 2048 bit RSA private key
      .+++
      ........+++
      writing new private key to 'webkey.pem'
      Enter PEM pass phrase: JohnnyCashIsCool
      Verifying - Enter PEM pass phrase:  JohnnyCashIsCool
      #
      # chmod 440 /root/webcert.pem ; chown root:webservd /root/webcert.pem

      Notas -  Para cumplir con FIPS 140, la longitud mínima de la clave RSA es 2048. Para obtener más información, consulte Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .

      Para obtener más información, consulte la página del comando man openssl(5).

    2. Envíe la CSR a la autoridad de certificación (CA).
    3. Reemplace el archivo webcert.pem con el certificado firmado de la CA.
  2. Configure el Proxy SSL en el nivel del núcleo con una frase de contraseña y el certificado de clave pública/privada.
    1. Cree, guarde y proteja la frase de contraseña.
      # echo "RefrigeratorsAreCool" > /root/kssl.pass
      # chmod 440 /root/kssl.pass; chown root:webservd /root/kssl.pass

      Notas - El nombre de la frase de contraseña no puede contener ningún carácter de espacio.
    2. Combine el certificado de clave privada y de clave pública en un archivo.
      # cat /root/webcert.pem /root/webkey.pem > /root/webcombo.pem
    3. Configure el Proxy SSL en el nivel del núcleo con un certificado de clave pública/privada y una frase de contraseña.
      # ksslcfg create -f pem -i /root/webcombo.pem -x 8443 -p /root/kssl.pass 443
  3. Configure el servidor web para recepción en el puerto 8443 para comunicaciones no cifradas.

    Edite la línea Listen en el archivo /etc/apache2/2.2/httpd.conf.

    # pfedit /etc/apache2/2.2/httpd.conf
    ...
    ## Listen 80
    Listen 8443
  4. Agregue la plantilla del módulo SSL, ssl.conf, al directorio de configuración de Apache.
    # cp /etc/apache2/2.2/samples-conf.d/ssl.conf /etc/apache2/2.2/ssl.conf

    Este módulo agrega la escucha en el puerto 443 para conexiones cifradas.

  5. Active el servidor web para descifrar la frase de contraseña en el archivo /root/kssl.pass.
    1. Cree una secuencia de comandos de shell que lea el archivo kssl.pass.
      # pfedit /root/put-passphrase.sh
      #!/usr/bin/ksh -p
      ## Reads Proxy SSL en el nivel del núcleo passphrase
      /usr/bin/cat /root/kssl.pass
    2. Haga que la secuencia de comandos sea ejecutable y proteja el archivo.
      # chmod 500 /root/put-passphrase.sh
      # chown webservd:webservd /root/put-passphrase.sh
    3. Modifique el parámetro SSLPassPhraseDialog en el archivo ssl.conf para que llame a esta secuencia de comandos de shell.
      # pfedit /etc/apache2/2.2/ssl.conf
      ...
      ## SSLPassPhraseDialog  builtin
      SSLPassPhraseDialog exec:/root/put-passphrase.sh
  6. Coloque los certificados de clave pública y clave privada del servidor web en la ubicación correcta.

    Los valores de los parámetros SSLCertificateFile y SSLCertificateKeyFile del archivo ssl.conf contienen los nombres y la colocación esperados. Puede copiar los certificados a la ubicación correcta o establecer un enlace a ellos.

    # ln -s  /root/webcert.pem /etc/apache2/2.2/server.crtSSLCertificateFile default location
    # ln -s /root/webkey.pem /etc/apache2/2.2/server.keySSLCertificateKeyFile default location
  7. Active el servicio Apache.
    # svcadm enable apache22
  8. (Opcional)Verifique que ambos puertos funcionen.

    Utilice los comandos openssl s_client y kstat para ver los paquetes.

    1. Utilice un cifrado que esté disponible en el Proxy SSL en el nivel del núcleo.
      # openssl s_client -cipher RC4-SHA -connect web-server:443

      Un aumento de 1 en el contador kstat kssl_full_handshakes verifica que la sesión SSL haya sido gestionada por el Proxy SSL en el nivel del núcleo.

      # kstat -m kssl -s kssl_full_handshakes
    2. Utilice un cifrado que no esté disponible en el Proxy SSL en el nivel del núcleo.
      # openssl s_client -cipher CAMELLIA256-SHA -connect web-server:443

      Un aumento de 1 en el contador kstat kssl_fallback_connections verifica que el paquete llegó, pero la sesión SSL fue gestionada por el servidor web Apache.

      # kstat -m kssl -s kssl_fallback_connections
Ejemplo 3-1  Configuración de un servidor web Apache 2.2 para utilizar el Proxy SSL en el nivel del núcleo

El siguiente comando crea una instancia de servicio para el Proxy SSL en el nivel del núcleo que utiliza el formato de claves pem:

# ksslcfg create -f pem -i cert-and-key.pem -p kssl.pass -x 8443 443