Red Hat Training

A Red Hat training course is available for RHEL 8

4.3. Usando HSMs protegendo chaves privadas em Apache e Nginx

Os servidores HTTP Apache e Nginx podem trabalhar com chaves privadas armazenadas em módulos de segurança de hardware (HSMs), o que ajuda a evitar a revelação das chaves e ataques "man-in-the-middle". Note que isto normalmente requer HSMs de alto desempenho para servidores ocupados.

Apache Servidor HTTP

Para uma comunicação segura na forma do protocolo HTTPS, o servidor Apache HTTP (httpd) utiliza a biblioteca OpenSSL. A OpenSSL não suporta o PKCS #11 nativamente. Para utilizar HSMs, é necessário instalar o pacote openssl-pkcs11, que fornece acesso aos módulos PKCS #11 através da interface do motor. Você pode usar um URI PKCS #11 em vez de um nome de arquivo comum para especificar uma chave de servidor e um certificado no arquivo de configuração /etc/httpd/conf.d/ssl.conf, por exemplo:

SSLCertificateFile    "pkcs11:id=%01;token=softhsm;type=cert"
SSLCertificateKeyFile "pkcs11:id=%01;token=softhsm;type=private?pin-value=111111"

Instale o pacote httpd-manual para obter a documentação completa para o Servidor HTTP Apache, incluindo a configuração TLS. As diretrizes disponíveis no arquivo de configuração /etc/httpd/conf.d/ssl.conf são descritas em detalhes em /usr/share/httpd/manual/mod/mod_ssl.html.

Nginx Servidor HTTP e proxy

Como Nginx também usa o OpenSSL para operações criptográficas, o suporte para o PKCS #11 deve passar pelo motor openssl-pkcs11. Nginx atualmente suporta apenas o carregamento de chaves privadas de um HSM, e um certificado deve ser fornecido separadamente como um arquivo regular. Modifique as opções ssl_certificate e ssl_certificate_key na seção server do arquivo de configuração /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";

Note que o prefixo engine:pkcs11: é necessário para o PKCS #11 URI no arquivo de configuração Nginx. Isto porque o outro prefixo pkcs11 se refere ao nome do motor.