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

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.