OpenSSL¶
Aviso
Ao tentar recuperar a chave privada, o OpenSSL irá falhar. Isto é normal porque as chaves privadas não podem ser extraídas de um NetHSM. Em vez disso, pode querer recuperar a chave pública (ver exemplo abaixo).
Motor¶
Aviso
Ao usar uma versão do motor (libp11) de 0.4.12 ou anterior, ter uma chave EdDSA no NetHSM fará com que o OpenSSL não encontre nenhuma chave. Na versão 0.4.12 e anteriores, o motor lista todas as chaves no NetHSM quando uma chave é solicitada. Ao procurar uma chave por rótulo ou id, é recomendado usar a versão 0.4.13 ou mais recente, ou construir libp11 a partir da fonte. O binário do motor estará em src/.libs/pkcs11.so
.
A interface do motor OpenSSL é a forma antiga de implementar backends personalizados para o OpenSSL e está obsoleta no OpenSSL 3. Esta continua a ser a forma mais estável de utilizar o NetHSM com o OpenSSL.
Terá de configurar o módulo PKCS#11, seguindo estas instruções.
Install the engine:
apt install libengine-pkcs11-openssl
dnf install openssl-pkcs11
pacman -S libp11
Em seguida, é necessário configurar o OpenSSL para usar o mecanismo. Isto é feito adicionando as seguintes linhas ao seu ficheiro openssl.cnf
:
openssl_conf = openssl_init
[openssl_init]
engines = engine_section
[engine_section]
pkcs11 = pkcs11_section
[pkcs11_section]
engine_id = pkcs11
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
MODULE_PATH = /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so
init = 0
Nota
Você pode especificar ao OpenSSL o caminho do arquivo de configuração do OpenSSL usando a variável de ambiente OPENSSL_CONF
.
Aviso
Se o arquivo de configuração principal do OpenSSL for modificado para conter apenas essas linhas, ele pode quebrar outros programas que usam o OpenSSL. Assim, você pode querer criar um ficheiro de configuração separado para o motor.
Substitua /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so
pelo caminho para o módulo PKCS#11 que instalou anteriormente.
Substitua /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
pelo caminho para o mecanismo OpenSSL que você instalou. O caminho varia de acordo com a sua distribuição. O número em engines-3
corresponde à sua versão do OpenSSL. No Debian, o caminho para o mecanismo OpenSSL 3 é /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
; para o Fedora é /usr/lib64/engines-3/libpkcs11.so
.
Agora pode utilizar chaves no NetHSM utilizando PKCS#11 URIs, por exemplo:
engine:pkcs11:pkcs11:object=webserver;type=private
PAM
Nota
O PIN de administrador <x id=»4»></x><x id=»14»></x> tem de ter um comprimento mínimo de 8 caracteres e um comprimento máximo de 127 caracteres. Pode conter caracteres alfanuméricos, incluindo caracteres especiais, tais como pontuações.
p11tool --provider /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so --list-all
Exemplo de comando¶
Recuperar a chave pública de um par de chaves assimétricas no NetHSM :
openssl pkey -engine pkcs11 -inform ENGINE -in "pkcs11:object=webserver;type=public" -pubout
Fornecedor¶
A interface do provedor OpenSSL é a nova maneira de implementar backends personalizados para o OpenSSL. O backend pkcs11-provider ainda está numa fase inicial de desenvolvimento.
Terá de configurar o módulo PKCS#11, seguindo estas instruções.
Instalar o provedor. Para o Fedora existe um pacote chamado pkcs11-provider
. Para outras distribuições Linux, será necessário compilá-lo a partir da fonte.
Em seguida, é necessário configurar o OpenSSL para usar o provedor. Isso é feito adicionando as seguintes linhas ao seu arquivo openssl.cnf
:
openssl_conf = openssl_init
[openssl_init]
providers = provider_sect
[provider_sect]
pkcs11 = pkcs11_sect
[pkcs11_sect]
module = /home/sautax/git/pkcs11-provider/src/.libs/pkcs11.so
pkcs11-module-path = /usr/lib/libnethsm_pkcs11.so
activate = 1
Defina module
como o caminho do fornecedor que instalou e pkcs11-module-path
como o caminho do módulo PKCS#11 que instalou.
Se pretender definir o NetHSM como o fornecedor predefinido, pode adicionar default = pkcs11
à secção provider_sect
.
Nota
Você pode especificar ao OpenSSL o caminho do arquivo de configuração do OpenSSL usando a variável de ambiente OPENSSL_CONF
.
Aviso
Se o arquivo de configuração principal do OpenSSL for modificado para conter apenas essas linhas, ele pode quebrar outros programas que usam o OpenSSL. Assim, pode ser necessário criar um ficheiro de configuração separado para o fornecedor.
Em seguida, pode utilizar chaves no NetHSM utilizando PKCS#11 URIs, por exemplo:
openssl pkey -provider pkcs11 -in "pkcs11:object=rsakey" -pubout
Se definir o NetHSM como o fornecedor predefinido, pode omitir o argumento -provider pkcs11
.
Nota
Atualmente, ao definir manualmente um tipo de chave no URI, o fornecedor não conseguirá encontrar a chave. Pode omitir a parte ;type=private
ou ;type=public
do URI para que funcione.