Classe Java KeyStore do AWS CloudHSM para o Client SDK 5 - AWS CloudHSM

Classe Java KeyStore do AWS CloudHSM para o Client SDK 5

A classe KeyStore do AWS CloudHSM fornece armazenamento de chaves PKCS12 para fins especiais. 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. A classe AWS CloudHSM KeyStore ‭implementa a ‭KeyStore Interface do provedor de serviços (SPI), da Extensão de criptografia Java (JCE). Para obter mais informações sobre como usar KeyStore, consulte Class KeyStore.

nota

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

Escolher o repositório de chaves apropriado para o Client SDK 5 do AWS CloudHSM

O provedor Java Cryptographic Extension (JCE) AWS CloudHSM oferece uma AWS CloudHSM KeyStore para fins especiais. A classe KeyStore do AWS CloudHSM oferece suporte ao descarregamento de operações de chave para o HSM, ao armazenamento local de certificados e às operações baseadas em certificados.

Carregue o CloudHSM KeyStore para fins especiais da seguinte forma:

KeyStore ks = KeyStore.getInstance("CloudHSM")

Inicializar o AWS CloudHSM KeyStore para Client SDK 5

Faça login no KeyStore do AWS CloudHSM da mesma maneira que você faz login no provedor JCE. Você pode usar variáveis de ambiente ou o arquivo de propriedade 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 fornece-a ao usar os métodos de carregamento, definição e obtenção.

Instancie um novo objeto CloudHSM KeyStore da seguinte forma:

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);

Usar o AWS CloudHSM KeyStore ou o Client SDK 5 do AWS CloudHSM

O AWS CloudHSM KeyStore está em conformidade com a especificação JCE Class KeyStore 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. O AWS CloudHSM KeyStore não dá suporte à exclusão de dados de chave armazenados em um HSM. Você pode excluir chaves usando o método destroy da interface Destrutível.

    ((Destroyable) key).destroy();
  • 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

    O GetKey é passado para o HSM e retorna um objeto chave correspondente ao rótulo dado. Como o getKey consulta diretamente o HSM, ele pode ser usado para qualquer chave no HSM, independentemente de ter sido gerado 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 de chave e o método KeyStore SetKeyEntry para associar o certificado à chave.

  • setKeyEntry com chave byte[]

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

  • setKeyEntry com objeto Key

    Atribui a chave fornecida ao alias fornecido e armazena-a dentro do HSM. Se a chave ainda não existir dentro do HSM, ela 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).