4.3. Uso de HSM para proteger las claves privadas en Apache y Nginx
Los servidores HTTP Apache
y Nginx
pueden trabajar con claves privadas almacenadas en módulos de seguridad de hardware (HSM), lo que ayuda a evitar la divulgación de las claves y los ataques de intermediario. Tenga en cuenta que esto suele requerir HSMs de alto rendimiento para los servidores ocupados.
Apache
Servidor HTTP
Para la comunicación segura en forma de protocolo HTTPS, el servidor HTTP Apache
(httpd
) utiliza la biblioteca OpenSSL. OpenSSL no soporta PKCS #11 de forma nativa. Para utilizar los HSM, tiene que instalar el paquete openssl-pkcs11
, que proporciona acceso a los módulos PKCS #11 a través de la interfaz del motor. Puede utilizar un URI PKCS #11 en lugar de un nombre de archivo normal para especificar una clave de servidor y un certificado en el archivo de configuración /etc/httpd/conf.d/ssl.conf
, por ejemplo:
SSLCertificateFile "pkcs11:id=%01;token=softhsm;type=cert" SSLCertificateKeyFile "pkcs11:id=%01;token=softhsm;type=private?pin-value=111111"
Instale el paquete httpd-manual
para obtener la documentación completa del servidor HTTP Apache
, incluida la configuración de TLS. Las directivas disponibles en el archivo de configuración /etc/httpd/conf.d/ssl.conf
se describen en detalle en /usr/share/httpd/manual/mod/mod_ssl.html.
Nginx
Servidor HTTP y proxy
Dado que Nginx
también utiliza OpenSSL para las operaciones criptográficas, el soporte para PKCS #11 debe pasar por el motor de openssl-pkcs11
. Nginx
actualmente sólo soporta la carga de claves privadas desde un HSM, y un certificado debe ser proporcionado por separado como un archivo regular. Modifique las opciones ssl_certificate
y ssl_certificate_key
en la sección server
del archivo de configuración /etc/nginx/nginx.conf
:
ssl_certificate /path/to/cert.pem ssl_certificate_key "engine:pkcs11:pkcs11:token=softhsm;id=%01;type=private?pin-value=111111";
Tenga en cuenta que el prefijo engine:pkcs11:
es necesario para el URI PKCS #11 en el archivo de configuración Nginx
. Esto se debe a que el otro prefijo pkcs11
se refiere al nombre del motor.