내용으로 건너뛰기

OpenSSL을 사용하여 내 키를 AWS KMS로 가져오려고 할 때 “InvalidCiphertext” 오류를 해결하려면 어떻게 해야 하나요?

3분 분량
0

OpenSSL을 사용하여 암호화된 키 자료를 AWS Key Management Service(AWS KMS)로 가져왔습니다. 하지만 요청이 실패하고 “InvalidCiphertext” 오류가 발생했습니다.

간략한 설명

OpenSSL은 기본 설정으로 SHA-1 해시 함수(RSAES_OAEP_SHA_256 알고리즘)를 사용합니다.

RSAES_OAEP_SHA_256 알고리즘을 사용할 때 가져오기 오류를 방지하려면 OpenSSL을 사용하여 키 자료를 암호화하세요. openssl pkeyutl 명령을 실행하고 -pkeyopt rsa_padding_mode:oaep-pkeyopt rsa_oaep_md:sha256 매개 변수를 지정하세요.

해결 방법

키 자료 오리진으로 “external”을 사용하여 AWS KMS 키를 생성하세요

AWS Command Line Interface AWS CLI 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참고하세요. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

create-keycreate-alias AWS CLI 명령을 실행하여 외부 키 구성 요소에 대한 AWS KMS를 생성하세요.

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

**참고:**example-region-1kms_key_with_externalmaterial를 사용자의 키 값으로 바꾸세요.

키 자료를 가져오기할 때까지 AWS KMS 키 상태는 가져오기 보류 중으로 유지됩니다. 다음 명령을 실행하여 키의 상태를 확인하세요.

aws kms --region $REGION describe-key --key-id $KEY_ID

래핑 퍼블릭 키와 가져오기 토큰 다운로드

get-parameters-for-import AWS CLI 명령을 실행하여 다음의 PublicKeyImportToken 값을 가져옵니다.

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

base64를 사용하여 두 값을 모두 디코딩한 다음 이 값을 별도의 파일에 저장하세요.

래핑 퍼블릭 키는 PublicKey.bin에 저장되고 가져오기 토큰은 ImportToken.bin에 저장됩니다.

256비트 대칭 키 생성

키 자료는 256비트(32바이트) 대칭 키여야 합니다. 다음 명령 중 하나를 실행하여 키를 생성하세요.

OpenSSL

openssl rand -out PlaintextKeyMaterial.bin 32

-또는-

dd

dd if=/dev/urandom of=PlaintextKeyMaterial.bin bs=32 count=1

사용자의 OpenSSL 버전이 openssl pkeyutl을 지원하는지 확인하세요

**중요:**pkeyutl 명령은 OpenSSL 버전 1.0.2 이상에서만 사용할 수 있습니다.

Amazon Linux Amazon Machine Image(AMI)로 시작한 인스턴스와 같이 Red Hat Enterprise Linux(RHEL) 기반 Linux 컴퓨터를 사용하는 경우 다음 단계를 완료하세요.

  1. 다음 명령을 실행하여 OpenSSL 버전을 점검하세요.

    openssl version
    
  2. OpenSSL을 업데이트하려면 다음 명령을 실행하세요.

    sudo yum -y update openssl
    

macOS를 사용하는 경우 다음 단계를 완료하세요.

  1. 다음 Homebrew 명령을 실행하세요.

    brew updatebrew upgrade openssl
    brew info openssl
    

    **참고:**info openssl 명령은 OpenSSL이 **/usr/local/opt/openssl/bin/**에 설치되어 있음을 보여 줍니다.

  2. 다음 명령을 실행하여 OpenSSL 버전을 확인하세요.

    /usr/local/opt/openssl/bin/openssl version
    
  3. 항상 최신 OpenSSL 버전을 사용하려면 ~/.bash_profile 끝에 다음 줄을 추가하세요.

    export PATH="/usr/local/opt/openssl/bin:$PATH"
    
  4. 다음 명령을 실행하세요.

    source ~/.bash_profile
    
  5. macOS 환경의 변경 사항을 확인하려면 다음 명령을 실행하세요.

    echo $PATHopenssl version

래핑 퍼블릭 키로 키 자료를 암호화하세요

최신 버전의 OpenSSL과 래핑 퍼블릭 키를 사용하여 키 자료를 암호화하려면 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

이 명령은 EncryptedKeyMaterial.bin을 생성합니다. 이 값을 암호화된 키 자료로 AWS KMS 키에 가져옵니다.

참고: 래핑 퍼블릭 키는 PublicKey.bin에 저장됩니다.

암호화된 키 자료 가져오기

다음 단계를 완료합니다.

  1. import-key-material AWS CLI 명령을 실행하여 암호화된 키 구성 요소를 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_EXPIRE
    

    참고: 가져오기가 완료되면 키의 상태가 활성화됨으로 변경됩니다.

  2. describe-key AWS CLI 명령을 실행하여 키의 상태를 확인하세요.

    aws kms --region $REGION describe-key --key-id $KEY_ID
댓글 없음