Configuração

A biblioteca PKCS#11 do HSM Dinamo está em uma camada acima da API nativa do Dinamo. Você pode consultar as opções de configuração da biblioteca cliente no Manual de Usuário.

A configuração é feita através de variáveis de ambiente (com prefixo DFENCE_PKCS11_) que devem ser setadas no escopo do sistema, do usuário ou do processo que faz o carregamento da biblioteca.

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

User

DFENCE_PKCS11_USER

Id (nome) do usuário (userid) do HSM que será utilizado pela PKCS#11.

Variável deve ser definida com o id do usuário para que a biblioteca PKCS#11 funcione corretamente.

Obs: caso use o parâmetro pPin para informar o id do usuário (ver variável DFENCE_PKCS11_SPECIAL_PWD abaixo) não há necessidade de definir DFENCE_PKCS11_USER.

Endereço IP

DFENCE_PKCS11_IP

Endereço IP do HSM.

Variável deve ser definida com o endereço IP do HSM para que a PKCS#11 funcione corretamente.

Obs: caso use o parâmetro pPin para informar o endereço IP do HSM (ver variável DFENCE_PKCS11_SPECIAL_PWD abaixo) o endereço IP definido aqui será usado nas funções PKCS#11 não autenticadas (ex: C_GetTokenInfo, C_GetSlotInfo, etc ) e o endereço IP informado em pPin será usado na operação de autenticação.

Special PIN

DFENCE_PKCS11_SPECIAL_PWD

Habilita a passagem do id de usuário, senha e endereço IP do HSM no parâmetro pPin da função PKCS#11 C_Login.

Variável não definida ou variável definida para 0: o parâmetro pPin (na função PKCS#11 C_Login) deverá receber apenas a senha (password) do usuário do HSM:

password

Variável definida para 1: o parâmetro pPin (em C_Login ) deverá receber o id do usuário (userid), a senha (password) o endereço IP do HSM (ip) no formato:

userid:[email protected]

Ex.: master:[email protected]

Caso o balanceamento de carga esteja habilitado o IP será ignorado internamente.

Para as funções PKCS#11 não autenticadas o endereço IP utilizado será aquele informado na varíável DFENCE_PKCS11_IP.

Encrypted

DFENCE_PKCS11_ENCRYPTED

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

Variável não definida ou variável definida para 1: a conexão com o HSM será encriptada.

Variável definida para 0: a conexão com o HSM será em texto claro.

É recomendado que se utilize a conexão encriptada.

Auto Reconnect

DFENCE_PKCS11_AUTO_RECONNECT

Habilita a tentativa de reconexão automática de sessões do HSM em casos de falha.

Variável não definida ou definida em 0: auto-reconnect é desabilitado.

Variável definida em 1: auto-reconnect é habilitado.

É recomendado que se utilize o auto-reconnect habilitado.

O auto-reconnect está disponível nas APIs que acessam o HSM e que não fazem parte de operações que necessitem de mais de uma etapa para serem finalizadas.

Exemplos de APIs que não contam com o auto-reconnect: C_Encrypt, C_EncryptUpdate, C_Decrypt, C_DecryptUpdate etc. Em caso de falha de rede nestas funções, deve-se fechar a sessão que falhou, abrir uma nova e refazer a operação.

Log Path

DFENCE_PKCS11_LOG_PATH

Caminho com o nome do arquivo que conterá os logs gerados pela biblioteca.

Variável não definida o log não é gerado.

Variável definida deve conter caminho e nome do arquivo.

Ex.: c:\tacndp11.log

Log Level

DFENCE_PKCS11_LOG_LEVEL

Define o nível de log.

Os níveis de log são:

  • 0 : apenas erros; registra apenas situações de erro. (que normalmente impedem a execução do serviço solicitado).

  • 3 : depuração; registra informações detalhadas de operação, além das mensagens de erro.

  • 1000 : desabilitado; nenhum evento é registrado em log.

Em condições normais de operação, é recomendável manter o mínimo de log da biblioteca. O nível de depuração pode ser usado para diagnosticar problemas de operação.

Log Flush

DFENCE_PKCS11_LOG_FLUSH

Habilita a escrita das mensagens de log diretamente no arquivo de log, sem utilizar buffer.

Variável não definida ou definida para 0: as mensagens de log são bufferizadas e gravadas no arquivo de logs em intervalos.

Variável definida para 1: as mensagens de log são gravadas diretamente no arquivo.

A biblioteca pode manter um pequeno buffer de mensagens de log antes de fazer a gravação física no arquivo. Isto permite ganhos de desempenho. Em condições de erro ou situações de diagnóstico, é interessante que o registro seja gravada imediatamente após sua ocorrência.

Large Find List

DFENCE_PKCS11_LARGE_FIND_LIST

Habilita o uso de busca para grandes quantidades de objetos.

Variável não definida ou definida para 0: utiliza o sistema de busca padrão com limite de leitura de 512 objetos por usuário. Os objetos que estiverem acima do limite de 512 objetos não são listados na busca.

Permite que se façam outras chamadas utilizando a mesma sessão durante uma operação de busca.

Exemplo permitido:

C_FindObjectsInit(session1);
. . .
C_FindObjects(session1);
. . .
C_GetAttributeValue(session1);
. . .
C_FindObjectsFinal(session1);

Variável definida para 1: utiliza o sistema de busca para grandes quantidades de objetos por usuário.

Busca por quantidades maiores do que 512 objetos, mas não permite que se façam outras chamadas utilizando a mesma sessão durante uma operação de busca.

Exemplo permitido:

C_FindObjectsInit(session1);
. . .
C_FindObjects(session1);
. . .
C_FindObjectsFinal(session1);
. . .
C_GetAttributeValue(session1);

Exemplo não permitido:

C_FindObjectsInit(session1);
. . .
C_FindObjects(session1);
. . .
C_GetAttributeValue(session1);
. . .
C_FindObjectsFinal(session1);

Suporte ao uso de objetos não privados

HSM_PKCS11_NON_PRIVATE_OBJECTS_SUPPORT

Habilita a criação de objetos não privados (atributo CKA_PRIVATE igual a 0).

O atributo de objeto CKA_PRIVATE indica se um objeto é privado ou público no que diz respeito aos seus requisitos de acesso. No contexto da PKCS#11, um objeto público pode ser acessado por uma sessão autenticada ou não autenticada, já o objeto privado pode ser acessado apenas utilizando uma sessão autenticada.

Para permitir a criação de objetos públicos (CKA_PRIVATE igual a 0), esta variável de ambiente deve ser utilizada.

Variável não definida ou definida para 0: não permite a geração de objetos públicos (CKA_PRIVATE igual a 0).

Variável definida para 1: permite a geração de objetos públicos (CKA_PRIVATE igual a 0).