내용으로 건너뛰기

CloudHSM CKM_RSA_AES_KEY_WRAP 메커니즘과 함께 작동하도록 OpenSSL에 패치를 적용하려면 어떻게 해야 합니까?

3분 분량
0

AWS CloudHSM CKM_RSA_AES_KEY_WRAP 메커니즘을 OpenSSL과 함께 사용하고 싶습니다.

간략한 설명

CloudHSM PKCS #11 라이브러리RSA_AES_KEY_WRAP 메커니즘과 호환되는 -id-aes256-wrap-pad OpenSSL 암호를 사용하려면 최신 버전의 OpenSSL을 다운로드하여 설치하십시오. 그런 다음, CKM_RSA_AES_KEY_WRAP 메커니즘에 필요한 봉투 래핑을 허용하도록 패치를 적용합니다.

해결 방법

참고:

  • 다음 해결 방법은 클라이언트의 기본 OpenSSL 설치를 제거하거나 변경하지 않습니다.
  • 이 해결 방법은 AWS 계정 루트 사용자와 함께 Red Hat Enterprise Linux(RHEL) Bash 명령을 사용합니다.
  • 또한 OpenSSL v1.1.x에만 적용됩니다.

CKM_RSA_AES_KEY_WRAP을 허용하도록 OpenSSL에 패치 적용

OpenSSL에 패치를 적용하기 전에 다음 명령을 실행하여 계정 루트 사용자로 전환합니다.

sudo su -

다음 단계를 완료하십시오.

  1. 다음 명령을 실행한 다음, OpenSSL 버전을 확인합니다.

    openssl version
  2. /root/build 디렉터리에서 최신 OpenSSL 바이너리를 다운로드합니다.

  3. 다음 명령을 실행하여 디렉터리를 설정합니다.

    mkdir $HOME/build
    mkdir -p $HOME/local/ssl
    cd $HOME/build
  4. OpenSSL 웹 사이트에서 최신 OpenSSL 다운로드 버전을 확인합니다.

  5. 다음 명령을 실행하여 바이너리를 다운로드하고 압축을 풉니다.

    wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
    tar -zxf openssl-1.1.1w.tar.gz

    참고: openssl-1.1.1w.tar.gz를 최신 OpenSSL 버전으로 바꾸십시오.

  6. 다음 명령을 실행하여 패치를 설치하고, gcc 도구를 만들어 패치를 적용하고, 다운로드한 바이너리를 컴파일합니다.

    yum install patch make gcc -y
  7. 다음 블록을 입력한 다음, 디바이스에서 Enter 키를 누릅니다.

    cat <<-EOF | patch -d $HOME/build/ -p 0
    diff -ur orig/openssl-1.1.1w/apps/enc.c openssl-1.1.1w/apps/enc.c
    --- orig/openssl-1.1.1w/apps/enc.c      
    +++ openssl-1.1.1w/apps/enc.c   
    @@ -534,6 +534,7 @@
              */
    
             BIO_get_cipher_ctx(benc, &ctx);
    +        EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPHER_CTX_FLAG_WRAP_ALLOW);
    
             if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc)) {
                 BIO_printf(bio_err, "Error setting cipher %s\n",
    EOF

    참고: OpenSSL-1.1.1w 이외의 OpenSSL 버전을 사용하는 경우 디렉터리를 변경하고 명령을 업데이트하십시오. 이 패치는 OpenSSL-1.1.1w에서만 작동합니다.
    성공적인 패치를 확인하는 출력 예시:

    [root@ip-172-31-20-119 build]# cat <<-EOF | patch -d $HOME/build/ -p 0
    diff -ur orig/openssl-1.1.1w/apps/enc.c openssl-1.1.1w/apps/enc.c
    --- orig/openssl-1.1.1w/apps/enc.c
    +++ openssl-1.1.1w/apps/enc.c
    @@ -534,6 +534,7 @@
              */
    
             BIO_get_cipher_ctx(benc, &ctx);
    +        EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPHER_CTX_FLAG_WRAP_ALLOW);
    
             if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc)) {
                 BIO_printf(bio_err, "Error setting cipher %s\n",
    EOF
    patching file openssl-1.1.1w/apps/enc.c
  8. 다음 명령을 실행하여 OpenSSL enc.c 파일을 컴파일합니다.

    cd $HOME/build/openssl-1.1.1w/
    ./config --prefix=$HOME/local --openssldir=$HOME/local/ssl
    make -j$(grep -c ^processor /proc/cpuinfo)
    make install

    참고: 각 명령을 컴파일하는 데 몇 분이 걸릴 수 있습니다.

최신 버전의 OpenSSL은 $HOME/local/ssl/lib/ 디렉터리의 라이브러리에 동적으로 연결되며 쉘에서 직접 실행할 수 없습니다.

셸에서 OpenSSL 실행

다음 단계를 완료하십시오.

  1. 다음 명령을 실행하여 관련 라이브러리를 OpenSSL에 사용할 수 있도록 LD_LIBRARY_PATH 환경 변수를 설정합니다.

    cd $HOME/local/bin/
    echo -e '#!/bin/bash \nenv LD_LIBRARY_PATH=$HOME/local/lib/ $HOME/local/bin/openssl "$@"' > ./openssl.sh

    참고: OpenSSL-1.1.1w를 여러 번 실행해야 하므로 바이너리를 실행하기 전에 $HOME/local/ssl/lib/ 경로를 로드하는 openssl.sh라는 스크립트를 만드십시오.

  2. 다음 명령을 실행하여 스크립트에 실행 비트를 설정합니다.

    chmod 755 ./openssl.sh
  3. 다음 명령을 실행하여 OpenSSL-1.1.1을 시작합니다.

    $HOME/local/bin/openssl.sh

    참고: 나중에 $HOME/local/bin/openssl.sh 명령을 사용하여 패치 적용 버전의 OpenSSL을 환경 변수로 실행할 수 있습니다. 패치 적용 버전의 OpenSSL을 사용하면 여러 명령을 실행할 수 있습니다.

  4. version을 입력한 다음, 디바이스에서 Enter 키를 눌러 명령 프롬프트에서 OpenSSL 버전을 확인합니다.

  5. quit를 입력한 다음, 디바이스에서 Enter 키를 눌러 명령 프롬프트를 종료합니다.

  6. 다음 명령을 실행하여 별칭을 설정합니다.

    alias OPENSSL_V111="$HOME/local/bin/openssl.sh"

    참고: 별칭을 .bash_profile에 추가할 수도 있습니다.

  7. OpenSSL을 사용하여 키를 CloudHSM으로 전송합니다.

AWS 공식업데이트됨 4달 전