{
"KeyMetadata": {
"AWSAccountId": "<ID da conta AWS>" ,
"KeyId": "<ID da chave>" ,
"Arn": "arn:aws:kms: <regiao>:<ID da conta AWS>:key/<ID da chave>",
"CreationDate": 1654625481.9,
"Enabled": true,
"Description": "cert1",
"KeyUsage": "SIGN_VERIFY",
"KeyState": "Enabled",
"Origin": "AWS_KMS",
"KeyManager": "CUSTOMER",
"CustomerMasterKeySpec": "RSA_2048",
"SigningAlgorithms": [
"RSASSA_PKCS1_V1_5_SHA_256",
"RSASSA_PKCS1_V1_5_SHA_384",
"RSASSA_PKCS1_V1_5_SHA_512",
"RSASSA_PSS_SHA_256",
"RSASSA_PSS_SHA_384",
"RSASSA_PSS_SHA_512"
]
}
}
Assinar termo digital
AWS KMS espera o DIGEST puro a ser assinado, então é preciso extrair essa informação a partir da estrutura PKCS#1 do arquivo digitalterm_hash.bin
Extrair o hash/digest puro do PKCS#1:
Resultado esperado:
Salve o HEX DUMP em um arquivo hash.hex e depois converta de hexadecimal para binário hash.bin
Assinar usando chave privada AWS KMS:
Requisição (CSR)
Gere o CSR na sua aplicação, que fará uso da chave no AWS KMS.
Se a aplicação não der suporte à geração do CSR, gere um CSR no OpenSSL com uma chave qualquer (RSA 2048). Então substitua no CSR a chave pública inserindo a do AWS KMS, e faça nova assinatura do CSR usando a chave privada no AWS KMS.
Essa é uma operação complexa. Recomendamos o uso de um script que faça esse trabalho, como o disponível neste repositório: https://github.com/g-a-d/aws-kms-sign-csr
Importante: É um repositório público, utilize somente após verificar o código e atestar que é seguro para a sua operação.
Mas se preferir o método manual, alguns comandos que podem ser úteis no processo:
Obter a chave pública:
Converta de base64 para formato DER:
Faça a conversão para o formato esperado pelo OpenSSL: