Configurando o JCE
Use as informações nos tópicos a seguir para configurar o provedor JCE de Gerenciamento de Chaves Dedicadas.
Definindo a Variável de Ambiente para o Provedor JCE
Defina a seguinte variável de ambiente para usar o Provedor JCE:
LD_LIBRARY_PATH: Esta variável deve incluir o caminho para o diretório que contém o arquivo ocidkmsjca.so. O uso dessa variável permite que o JCE localize as bibliotecas java nativas necessárias para se comunicar com o HSM. Para instalações padrão, o diretório é /opt/oci/hsm/lib.
Adicionar o Provedor JCE à Segurança Java
Você deve adicionar o provedor JCE à configuração de segurança Java do seu sistema usando um dos métodos descritos nesta seção.
No JAVA_HOME, adicione o provedor de segurança OCI Dedicated KMS ao final da lista de provedores de segurança. A entrada do profissional de saúde é a seguinte:
security.provider.<list-number>=com.oracle.dkms.jce.provider.DedicatedKmsProvider-
Abra o arquivo java.security em um editor. Por exemplo, execute este comando para abrir o arquivo no editor VIM:
$ vim /usr/lib/jvm/java-11-openjdk/conf/security/java.security -
Adicione a entrada ao final da lista de provedores de segurança no arquivo. No exemplo a seguir, a entrada é adicionada como
security.provider.13:$ vim /usr/lib/jvm/java-11-openjdk/conf/security/java.security security.provider.1=SUN security.provider.2=SunRsaSign security.provider.3=SunEC security.provider.4=SunJSSE security.provider.5=SunJCE security.provider.6=SunJGSS security.provider.7=SunSASL security.provider.8=XMLDSig security.provider.9=SunPCSC security.provider.10=JdkLDAP security.provider.11=JdkSASL security.provider.12=SunPKCS11 security.provider.13=com.oracle.dkms.jce.provider.DedicatedKmsProvider
Use o método addProvider na classe Java de Segurança para adicionar o Provedor JCE, da seguinte forma:
DedicatedKmsProvider provider = new DedicatedKmsProvider();
Security.addProvider(provider);
Consulte addProvider na documentação do Java para obter mais informações.
Autenticação
Os usuários são autenticados para log-in no HSM por credenciais recuperadas de várias origens em uma ordem de prioridade específica. Se forem encontradas credenciais válidas em qualquer origem, o log-in será concluído. Se nenhuma credencial válida for encontrada, o log-in falhará.
Origens de Credenciais e Ordem de Prioridade
As credenciais de log-in são fornecidas pelos seguintes mecanismos:
-
CallbackHandler: Se isso for fornecido, ele recuperará credenciais dinamicamente. Por exemplo:
public class CustomCallbackHandler implements CallbackHandler { private final String username; private final char[] password; public CustomCallbackHandler(String username, char[] password) { this.username = username; this.password = password; } @Override public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { for (Callback callback : callbacks) { if (callback instanceof NameCallback) { ((NameCallback) callback).setName(username); } else if (callback instanceof PasswordCallback) { ((PasswordCallback) callback).setPassword(password); } else { throw new UnsupportedCallbackException(callback, "Unsupported callback type"); } } } } DedicatedKmsProvider provider = new DedicatedKmsProvider(); Security.addProvider(provider); CustomCallbackHandler handler = new CustomCallbackHandler(crypto_user, cupassword.toCharArray()); provider.login(null, handler); -
Arquivo HsmCredentials.properties: O aplicativo verifica um arquivo de propriedades chamado
HsmCredentials.propertiesno classpath. Se o arquivo existir e contiver credenciais válidas, elas serão usadas para autenticação. Esse arquivo deve conter o seguinte:- HSM_USER = crypto_user
- HSM_PASSWORD = palavra-chave
-
Propriedades do sistema Java: Se as credenciais não forem encontradas no arquivo de propriedades, as propriedades do Sistema Java serão verificadas. Espera-se que os valores
HSM_USEReHSM_PASSWORDsejam definidos como propriedades do sistema. Você pode defini-los usando flags-Dao executar aplicativos java. Por exemplo-DHSM_USER=crypto_user -DHSM_PASSWORD=cupassword -
Variáveis de ambiente do Sistema Operacional (prioridade mais baixa): Se as credenciais não forem encontradas nas propriedades do sistema Java, elas poderão ser recuperadas das variáveis de ambiente, se as variáveis de ambiente forem definidas. Defina os valores
HSM_USEReHSM_PASSWORDcomo variáveis de ambiente e exporte-os conforme mostrado no seguinte exemplo:export HSM_USER=crypto_user export HSM_PASSWORD=cupassword