Configuração

A Engine OpenSSL Dinamo está em uma camada acima da API nativa do Dinamo. Consulte Software cliente sobre opções de configuração da biblioteca cliente.

Variáveis de Ambiente

A configuração da Engine OpenSSL é feita através de variáveis de ambiente (prefixadas por HSM_OSSL_ENGINE_) que devem ser configuradas no sistema operacional ou no processo que faz o carregamento da biblioteca Engine.

Sempre que forem alteradas as variáveis de ambiente é necessário que se reinicie a aplicação.

O prefixo das variáveis de ambiente foi atualizado a partir da versão 3.2.26 do cliente do HSM. A partir desta versão o prefixo é HSM_, nas versões anteriores o prefixo é DFENCE_.

Exemplo:

Versão antiga: DFENCE_OSSL_ENGINE_ENCRYPTED.

Versão nova: HSM_OSSL_ENGINE_ENCRYPTED.

User

HSM_OSSL_ENGINE_USER

Nome do usuário do HSM que será utilizado pela Engine OpenSSL.

Variável deve ser definida com o nome do usuário para que a Engine OpenSSL funcione.

IP

HSM_OSSL_ENGINE_IP

Endereço do HSM que será utilizado pela Engine OpenSSL.

Variável deve ser definida com o endereço IP do HSM para que a Engine OpenSSL funcione.

Encrypted

HSM_OSSL_ENGINE_ENCRYPTED

Define se a conexão feita com o HSM deve ser encriptada (TLS) ou aberta (clear text).

Variável não definida conexão encriptada. Variável definida utilizar 0 para conexão aberta e 1 para conexão encriptada.

É recomendado que se utilize a conexão encriptada.

Comando de Controle

A Engine OpenSSL do Dinamo aceita as configurações por comando de controle descritas na tabela a seguir. Estas configurações têm precedência sobre as configurações feitas via variáveis de ambiente. As configurações feitas por comando de controle podem ser feitas antes ou imediatamente depois da inicialização da Engine (ENGINE_init()).

USR

Define o usuário do HSM que será utilizado para a conexão com o HSM.

Valor deve ser string contendo o nome do usuário.

USR_PWD

Define a senha do usuário utilizado para a conexão com o HSM.

Valor deve ser string contendo a senha do usuário.

IP

Define o IP que será utilizado para a conexão com o HSM.

Valor deve ser string contendo o endereço IP.

NO_TLS

Desabilita o uso de TLS na conexão com o HSM. Se este controle não for definido o HSM operará por padrão com o TLS habilitado.

Valor deve ser número, sendo 1 para desabilitar a conexão TLS e 0 para habilitar a conexão TLS.

Algumas funções relacionadas à utilização de comandos:

int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)(void));
int ENGINE_cmd_is_executable(ENGINE *e, int cmd);
int ENGINE_ctrl_cmd(ENGINE *e, const char *cmd_name,long i, void *p, void (*f)(void), int cmd_optional);
int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg, int cmd_optional);

Ver documentação específica do OpenSSL para utilização e outras/atuais funções.

[1] https://www.openssl.org/docs/man1.0.2/crypto/engine.html

Abaixo um exemplo prático utilizando o programa linha de comando openssl com a Engine OpenSSL do Dinamo passando as configurações via comandos de controle da OpenSSL(ver tabela acima).

O comando req espera uma chave RSA já criada dentro do HSM. Alguns pararâmetros (path da biblioteca, id de usuário, endereço IP e id da chave) deverão estar de acordo com o ambiente.

>openssl
OpenSSL> version
OpenSSL 1.0.2p 14 Aug 2018
OpenSSL> engine -t dynamic -pre SO_PATH:D:\dinamo.dll -pre ID:dinamo -pre LIST_ADD:1 -pre LOAD -pre USR:usuario -pre IP:10.10.10.10 -pre USR_PWD:12345678
(dynamic) Dynamic engine loading support
Loaded: (dinamo) Dinamo engine support
[ available ]
OpenSSL> req -engine dinamo -new -key rsa -keyform engine -out req_rsa.pem -text -x509 -subj "/CN=John RSA Doe"
engine "dinamo" set.
OpenSSL>