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
-
loadCarrega 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); -
aliasesRetorna 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); } -
containsaliasRetorna 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.
-
deleteEntryExclui 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
destroyda interface Destrutível. ((Destroyable) key).destroy(); -
getCertificateRetorna 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); -
getCertificateAliasRetorna 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); -
getCertificateChainRetorna 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.
-
getCreationDateRetorna 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.
-
getKeyO GetKey é passado para o HSM e retorna um objeto chave correspondente ao rótulo dado. Como o
getKeyconsulta 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); -
isCertificateEntryVerifica se a entrada com o alias fornecido representa uma entrada de certificado.
-
isKeyEntryVerifica se a entrada com o alias fornecido representa uma entrada de chave. A ação procura o alias no arquivo PKCS12 e no HSM.
-
setCertificateEntryAtribui 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 KeyStoreSetKeyEntrypara associar o certificado à chave. -
setKeyEntrycom chavebyte[]No momento, essa API não é compatível com o Client SDK 5.
-
setKeyEntrycom objetoKeyAtribui 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
Keyfor do tipoPrivateKey, ele deve ser acompanhado por uma cadeia de certificados correspondente.Se o alias já existir, a
SetKeyEntrychamada lança umKeyStoreExceptione impede que a chave seja substituída. Se a chave precisar ser substituída, use KMU ou JCE para esse fim. -
engineSizeRetorna o número de entradas no repositório de chaves.
-
storeArmazena 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).