Usando a classe AWS CloudHSM KeyStore Java para o Client SDK 3 - AWS CloudHSM

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando a classe AWS CloudHSM KeyStore Java para o Client SDK 3

A AWS CloudHSM KeyStore classe fornece um armazenamento de chaves PKCS12 para fins especiais que permite o acesso às AWS CloudHSM chaves por meio de aplicativos como keytool e jarsigner. Este repositório de chaves pode armazenar certificados junto com os seus dados de chave e correlacioná-los com os dados da chave armazenados no AWS CloudHSM.

nota

Como os certificados são informações públicas e, para maximizar a capacidade de armazenamento de chaves criptográficas, AWS CloudHSM não oferece suporte ao armazenamento de certificados em HSMs.

A AWS CloudHSM KeyStore classe implementa a KeyStore Service Provider Interface (SPI) da Java Cryptography Extension (JCE). Para obter mais informações sobre o usoKeyStore, consulte Classe KeyStore.

Escolha do repositório de chaves apropriado

O provedor AWS CloudHSM Java Cryptographic Extension (JCE) vem com um armazenamento de chaves padrão de passagem e somente leitura que passa todas as transações para o HSM. Esse armazenamento de chaves padrão é diferente do de propósito especial AWS CloudHSM KeyStore. Na maioria das situações, você obterá melhor desempenho de runtime e throughput usando o padrão. Você só deve usar o AWS CloudHSM KeyStore para aplicativos em que precise de suporte para certificados e operações baseadas em certificados, além de transferir as principais operações para o HSM.

Embora ambos os armazenamentos de chaves usem o provedor JCE para operações, eles são entidades independentes e não trocam informações entre si.

Carregue o repositório de chaves padrão para seu aplicativo Java da seguinte forma:

KeyStore ks = KeyStore.getInstance("Cavium");

Carregue o CloudHSM para fins especiais da seguinte forma: KeyStore

KeyStore ks = KeyStore.getInstance("CloudHSM")

Inicializando AWS CloudHSM KeyStore

Faça login AWS CloudHSM KeyStore da mesma forma que você faz login no provedor JCE. Você pode usar variáveis de ambiente ou o arquivo de propriedades do sistema e deve fazer login antes de começar a usar o CloudHSM KeyStore. Para obter um exemplo de login em um HSM usando o JCE, consulte Login em um HSM.

Se desejar, você pode especificar uma senha para criptografar o arquivo PKCS12 local que contém dados de repositório de chaves. Ao criar o AWS CloudHSM Keystore, você define a senha e a fornece ao usar os métodos load, set e get.

Instancie um novo objeto CloudHSM da seguinte forma: KeyStore

ks.load(null, null);

Grave dados de repositório de chaves em um arquivo usando o método store. A partir desse ponto, você pode carregar o repositório de chaves existente usando o método load com o arquivo de origem e a senha da seguinte forma:

ks.load(inputStream, password);

Usando AWS CloudHSM KeyStore

Um objeto KeyStore CloudHSM geralmente é usado por meio de um aplicativo de terceiros, como jarsigner ou keytool. Você também pode acessar o objeto diretamente com código.

AWS CloudHSM KeyStore está em conformidade com a KeyStore especificação da classe JCE e fornece as seguintes funções.

  • load

    Carrega o repositório de chaves do fluxo de entrada fornecido. Se uma senha foi definida ao salvar o repositório de chaves, essa mesma senha deve ser fornecida para que o carregamento seja bem-sucedido. Defina ambos os parâmetros como null para inicializar um novo repositório de chaves vazio.

    KeyStore ks = KeyStore.getInstance("CloudHSM"); ks.load(inputStream, password);
  • aliases

    Retorna uma enumeração dos nomes de alias de todas as entradas na instância de repositório de chaves dada. Os resultados incluem objetos armazenados localmente no arquivo PKCS12 e objetos residentes no HSM.

    Código de exemplo:

    KeyStore ks = KeyStore.getInstance("CloudHSM"); for(Enumeration<String> entry = ks.aliases(); entry.hasMoreElements();) { String label = entry.nextElement(); System.out.println(label); }
  • ContainsAlias

    Retorna true se o repositório de chaves tiver acesso a pelo menos um objeto com o alias especificado. O repositório de chaves verifica objetos armazenados localmente no arquivo PKCS12 e objetos residentes no HSM.

  • DeleteEntry

    Exclui uma entrada de certificado do arquivo PKCS12 local. A exclusão de dados importantes armazenados em um HSM não é suportada usando o. AWS CloudHSM KeyStore Você pode excluir chaves com a ferramenta key_mgmt_util do CloudHSM.

  • GetCertificate

    Retorna o certificado associado a um alias, se disponível. Se o alias não existir ou fizer referência a um objeto que não for um certificado, a função retornará NULL.

    KeyStore ks = KeyStore.getInstance("CloudHSM"); Certificate cert = ks.getCertificate(alias)
  • GetCertificateAlias

    Retorna o nome (alias) da primeira entrada de repositório de chaves cujos dados correspondem ao certificado fornecido.

    KeyStore ks = KeyStore.getInstance("CloudHSM"); String alias = ks.getCertificateAlias(cert)
  • GetCertificateChain

    Retorna a cadeia de certificados associada ao alias fornecido. Se o alias não existir ou fizer referência a um objeto que não for um certificado, a função retornará NULL.

  • GetCreationDate

    Retorna a data de criação da entrada identificada pelo alias fornecido. Se uma data de criação não estiver disponível, a função retornará a data em que o certificado se tornou válido.

  • GetKey

    GetKey é passado para o HSM e retorna um objeto chave correspondente ao rótulo fornecido. Ao consultar getKey diretamente o HSM, ela pode ser usada para qualquer chave no HSM, independentemente de ter sido gerada pelo. KeyStore

    Key key = ks.getKey(keyLabel, null);
  • IsCertificateEntry

    Verifica se a entrada com o alias fornecido representa uma entrada de certificado.

  • IsKeyEntry

    Verifica se a entrada com o alias fornecido representa uma entrada de chave. A ação procura o alias no arquivo PKCS12 e no HSM.

  • SetCertificateEntry

    Atribui o certificado fornecido ao alias fornecido. Se o alias fornecido já estiver sendo usado para identificar uma chave ou certificado, um KeyStoreException é lançado. Você pode usar o código JCE para obter o objeto chave e, em seguida, usar o KeyStore SetKeyEntry método para associar o certificado à chave.

  • SetKeyEntry com chave byte[]

    No momento, essa API não é compatível com o Client SDK 3.

  • SetKeyEntry com objeto Key

    Atribui a chave fornecida ao alias fornecido e armazena-a dentro do HSM. Se o objeto Key não for do tipo CaviumKey, a chave será importada para o HSM como uma chave de sessão extraível.

    Se o objeto Key for do tipo PrivateKey, ele deve ser acompanhado por uma cadeia de certificados correspondente.

    Se o alias já existir, a SetKeyEntry chamada lança um KeyStoreException e impede que a chave seja substituída. Se a chave precisar ser substituída, use KMU ou JCE para esse fim.

  • EngineSize

    Retorna o número de entradas no repositório de chaves.

  • Store

    Armazena o repositório de chaves no fluxo de saída fornecido como arquivo PKCS12 e protege-o com a senha fornecida. Além disso, mantém todas as chaves carregadas (que são definidas usando chamadas setKey).