Apache¶
É possível configurar o Apache httpd para utilizar o NetHSM através do motor OpenSSL que, por sua vez, utiliza o módulo PKCS#11 do NetHSM.
O ficheiro do certificado tem de estar no disco, mas a chave privada pode ser utilizada a partir do NetHSM.
Um exemplo completo está disponível em abaixo.
OpenSSL Configuration¶
Configure o motor OpenSSL seguindo o guia de configuração do motor OpenSSL. (Os fornecedores OpenSSL ainda não são suportados pelo Apache httpd).
Httpd Configuration¶
Add the following lines to your httpd.conf :
Listen 443
#...
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
#...
<VirtualHost *:443>
DocumentRoot /usr/local/apache2/htdocs
SSLEngine on
SSLCertificateFile /certs/certificate.pem
SSLCertificateKeyFile "pkcs11:object=webserver"
ErrorLog /tmp/a-error.log
CustomLog /tmp/a-access.log combined
</VirtualHost>
The SSLCertificateFile must point to a certificate file on the disk.
The SSLCertificateKeyFile should be a PKCS#11 URI pointing to the private key in the NetHSM.
Nota
É necessário gerar o certificado separadamente e depois carregá-lo no NetHSM. Se o certificado no disco e a chave no NetHSM não corresponderem, o httpd não será iniciado.
libnethsm_pkcs11 Configuration¶
slots:
- label: LocalHSM
description: Local HSM (docker)
url: "https://192.168.3.161:8443/api/v1"
operator:
username: "operator"
password: "opPassphrase"
To secure the password you can provide it via an environment variable (see Passwords) or provide it in the httpd configuration:
SSLCertificateKeyFile "pkcs11:object=webserver;type=private;pin=opPassphrase";
Example¶
Se quiser experimentar o exemplo dado utilize o git para clonar o repositório nethsm-pkcs11 e execute os seguintes comandos:
Aviso
A execução do script de geração exclui a chave webserver e a substitui.
Configure a NetHSM, either a real one or a container. See the getting-started guide for more information. Besides an administrator, you are going to need an operator account.
Download and install the latest version of the nethsm-pkcs11 driver available from here.
Instale o mecanismo OpenSSL PKCS11 conforme descrito no OpenSSL Manual. Não é necessário criar um ficheiro de configuração.
Ajuste as variáveis
HOST,ADMIN_ACCOUNTeADMIN_ACCOUNT_PWDemcontainer/apache/generate.shde forma queHOSTcontenha a URL e a porta do seu NetHSM,ADMIN_ACCOUNTcontenha o nome de usuário de uma conta de administrador eADMIN_ACCOUNT_PWDa senha correspondente. Além disso, configure o caminho absoluto do mecanismo OpenSSL PKCS11 emOPENSSL_PKCS11_ENGINE_PATHe o caminho absoluto da biblioteca NetHSM PKCS11 emNETHSM_PKCS11_LIBRARY_PATH.Create a NetHSM PKCS11 configuration file in one of the known locations, e.g.,
/etc/nitrokey/p11nethsm.conf. It must have configured an operator account and use the same NetHSM instance specified in the generate script before.Atualizar a configuração PKCS11 em
container/apache/p11nethsm.confcom o URL do NetHSM e credenciais de operador válidas.Generate the certificate and key.
./container/apache/generate.sh
Construir o contentor.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Run the container.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
A página de teste do Apache estará disponível em https://localhost:9443/. Note que o seu browser, com sorte, irá avisá-lo de que o certificado do sítio Web é auto-assinado.