El Proxy SSL en el nivel del núcleo puede mejorar la velocidad del procesamiento de paquetes SSL en un servidor web Apache 2.2. Este procedimiento implementa el escenario simple que se muestra en la Figure 3–1.
Antes de empezar
Ya configuró un servidor web Apache 2.2. Este servidor web se incluye en Oracle Solaris.
Debe asumir el rol root.
# svcadm disable svc:/network/http:apache22
Si únicamente se especifica el parámetro SSLCertificateFile en el archivo ssl.conf, el archivo especificado se puede utilizar directamente para el Proxy SSL en el nivel del núcleo.
Si el parámetro SSLCertificateKeyFile también está especificado, debe combinar el archivo de certificado y el archivo de clave privada. Ejecute un comando similar al siguiente para combinar los archivos:
# cat cert.pem key.pem > cert-and-key.pem
Consulte la página del comando man ksslcfg(1M) para ver una lista completa de opciones. Los parámetros que debe proporcionar son:
key-format: se usa con la opción –f para definir el certificado y el formato de claves. Para el Proxy SSL en el nivel del núcleo, los formatos admitidos son pkcs11, pem y pkcs12.
key-and-certificate-file: se utiliza con la opción –i para definir la ubicación del archivo que almacena la clave del servidor y el certificado para las opciones de key-format pem y pkcs12.
password-file: se utiliza con la opción –p para obtener la contraseña usada para cifrar la clave privada para las opciones de key-format pem o pkcs12. Para pkcs11, la contraseña se utiliza para realizar una autenticación al token PKCS #11. Debe proteger el archivo de contraseña con los permisos 0400. El archivo se requiere para reinicios desatendidos.
token-label: se usa con la opción –T para especificar el token PKCS #11.
certificate-label: se usa con la opción –C para seleccionar la etiqueta del objeto del certificado del token PKCS #11.
proxy-port: se utiliza con la opción –x para definir el puerto proxy SSL. Debe especificar un puerto diferente del puerto estándar 80. El servidor web escucha en el puerto proxy SSL el tráfico de texto sin formato sin cifrar. Por lo general, el valor es 8443.
ssl-port: especifica el puerto de escucha para el Proxy SSL en el nivel del núcleo. Por lo general, el valor es 443.
Especifique el puerto proxy SSL y los parámetros asociados mediante uno de los siguientes formatos:
# ksslcfg create -f key-format -i key-and-certificate-file \ -p password-file -x proxy-port ssl-port
# ksslcfg create -f pkcs11 -T PKCS11-token -C certificate-label \ -p password-file -x proxy-port ssl-port
# svcs svc:/network/ssl/proxy STATE STIME FMRI online 02:22:22 svc:/network/ssl/proxy:default
La siguiente salida indica que no se creó la instancia de servicio:
svcs: Pattern 'svc:/network/ssl/proxy' doesn't match any instances STATE STIME FMRI
Edite el archivo /etc/apache2/2.2/http.conf y agregue una línea para definir el puerto proxy SSL. Si utiliza la dirección IP del servidor, el servidor web escucha en esa interfaz solamente. La línea es similar a la siguiente:
Listen proxy-port
El servicio de servidor web puede comenzar solamente después de que se haya iniciado la instancia del Proxy SSL en el nivel del núcleo. Los siguientes comandos establecen esa dependencia:
# svccfg -s svc:/network/http:apache22 svc:/network/http:apache22> addpg kssl dependency ...apache22> setprop kssl/entities = fmri:svc:/network/ssl/proxy:kssl-INADDR_ANY-443 ...apache22> setprop kssl/grouping = astring: require_all ...apache22> setprop kssl/restart_on = astring: refresh ...apache22> setprop kssl/type = astring: service ...apache22> end
# svcadm enable svc:/network/http:apache22