Come posso risolvere l'errore «InvalidCipherText» quando cerco di utilizzare OpenSSL per importare la mia chiave in AWS KMS?
Ho usato OpenSSL per importare il mio materiale chiave crittografato in AWS Key Management Service (AWS KMS). Tuttavia, la richiesta non è riuscita e ho ricevuto l'errore «InvalidCipherText».
Breve descrizione
Per impostazione predefinita, OpenSSL utilizza la funzione hash SHA-1 (algoritmo RSAES\ _OAEP\ _SHA\ _256).
Per evitare errori di importazione quando usi l'algoritmo RSAES\ _OAEP\ _SHA\ _256, usa OpenSSL per crittografare il materiale chiave. Esegui il comando openssl pkeyutl e specifica i parametri \ -pkeyopt rsa\ _padding\ _mode:oaep e -pkeyopt rsa_oaep_md:sha256.
Risoluzione
Usa "external" come origine del materiale chiave per creare una chiave AWS KMS
Se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Risolvi gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Esegui i comandi AWS create-key e create-alias AWS CLI per creare un AWS KMS per materiale chiave esterno:
export REGION=example-region-1export KEY_ALIAS=kms_key_with_externalmaterial export KEY_ID=`aws kms create-key --region $REGION --origin EXTERNAL --description $KEY_ALIAS --query KeyMetadata.KeyId --output text` aws kms --region $REGION create-alias --alias-name alias/$KEY_ALIAS --target-key-id $KEY_ID
Nota:Sostituisci example-region-1kms\ _key\ _with\ _externalmaterial con i valori della tua chiave.
Finché non importi il materiale chiave, lo stato della chiave AWS KMS rimane in Pending Import. Esegui il comando seguente per visualizzare lo stato della chiave:
aws kms --region $REGION describe-key --key-id $KEY_ID
Scarica la chiave wrapping (pubblica) e il token di importazione
Esegui il comando get-parameters-for-import AWS CLI per ottenere i valori PublicKey e ImportToken:
export KEY_PARAMETERS=`aws kms --region $REGION get-parameters-for-import --key-id $KEY_ID --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048`echo $KEY_PARAMETERS | awk '{print $7}' | tr -d '",' | base64 --decode > PublicKey.bin echo $KEY_PARAMETERS | awk '{print $5}' | tr -d '",' | base64 --decode > ImportToken.bin
Usa base64 per decodificare entrambi i valori, quindi memorizza questi valori in file separati.
La chiave pubblica di wrapping è archiviata in PublicKey.bin e il token di importazione è archiviato in ImportToken.bin.
Genera una chiave simmetrica a 256 bit
Il materiale chiave deve essere una chiave simmetrica a 256 bit (32 byte). Esegui uno dei seguenti comandi per generare la chiave:
OpenSSL
openssl rand -out PlaintextKeyMaterial.bin 32
-oppure-
dd
dd if=/dev/urandom of=PlaintextKeyMaterial.bin bs=32 count=1
Verifica che la tua versione di OpenSSL supporti openssl pkeyutl
**Importante:**Il comando pkeyutl è disponibile solo su OpenSSL versione 1.0.2 e versioni successive.
Se utilizzi un computer Linux basato su Red Hat Enterprise Linux (RHEL), ad esempio un'istanza avviata con Amazon Linux Amazon Machine Image (AMI), completa i seguenti passaggi:
-
Esegui il seguente comando per verificare la tua versione di OpenSSL:
openssl version -
Per aggiornare OpenSSL, esegui il comando seguente:
sudo yum -y update openssl
Se usi macOS, completa i seguenti passaggi:
-
Esegui i seguenti comandi Homebrew:
brew updatebrew upgrade openssl brew info openssl**Nota:**L’ultimo comando info openssl mostra che OpenSSL è installato in /usr/local/opt/openssl/bin/.
-
Esegui il comando seguente per confermare la versione di OpenSSL:
/usr/local/opt/openssl/bin/openssl version -
Per utilizzare sempre la versione più recente di OpenSSL, modifica ~/.bash_profile e aggiungi la riga seguente alla fine del file:
export PATH="/usr/local/opt/openssl/bin:$PATH" -
Esegui il comando seguente:
source ~/.bash_profile -
Per verificare la modifica nel tuo ambiente macOS, esegui il seguente comando:
echo $PATHopenssl version
Crittografa il materiale chiave con la chiave wrapping
Per utilizzare la versione più recente di OpenSSL e la chiave pubblica di wrapping per crittografare il materiale chiave, esegui il comando openssl pkeyutl:
openssl pkeyutl -in PlaintextKeyMaterial.bin -out EncryptedKeyMaterial.bin -inkey PublicKey.bin -keyform DER \ -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
Il comando genera EncryptedKeyMaterial.bin. Importi questo valore come materiale chiave crittografato nel KMS.
**Nota:**la chiave wrapping è memorizzata in PublicKey.bin.
Importa il tuo materiale chiave crittografato
Completa i seguenti passaggi:
-
Esegui il comando import-key-material AWS CLI per importare il materiale chiave crittografato nella chiave AWS KMS:
aws kms --region $REGION import-key-material --key-id $KEY_ID --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRENota: al termine dell'importazione, lo stato della chiave cambia in Abilitato.
-
Esegui il comando describe-key AWS CLI per verificare lo stato della chiave:
aws kms --region $REGION describe-key --key-id $KEY_ID
- Argomenti
- Security, Identity, & Compliance
- Lingua
- Italiano
Video correlati

