CloudHSM CKM_RSA_AES_KEY_WRAP メカニズムで使用できるように OpenSSL にパッチを適用するにはどうすればよいですか?

所要時間2分
0

AWS CloudHSM CKM_RSA_AES_KEY_WRAP メカニズムを OpenSSL で使用したいと考えています。

簡単な説明

CloudHSM PKCS #11 メカニズム RSA_AES_KEY_WRAP と互換性のある OpenSSL 暗号 -id-aes256-wrap-pad は、OpenSSL コマンドラインツールではデフォルトでは有効になっていません。

OpenSSL の最新バージョンをダウンロード、インストールしてパッチを適用し、CKM_RSA_AES_KEY_WRAP メカニズムに必要なエンベロープラッピングを許可することができます。

解決策

Bash コマンドを使用して OpenSSL v1.1.0 のローカルコピーを作成するには、以下の手順に従います。

注:

  • これらの手順では、クライアントの OpenSSL のデフォルトインストールを削除または変更しません。
  • 以下の手順では、ルートユーザーアカウントで RHEL コマンドを使用します。sudo su- コマンドを使用してルートユーザーに切り替えます。次に、パッチを適用したバージョンの OpenSSL を使用します。
  • これらの手順は OpenSSL v1.1.x にのみ適用されます。

OpenSSL をパッチを適用して CKM_RSA_AES_KEY_WRAP を許可する

  1. 次のコマンドを実行して、ルートユーザーとしてすべての手順を完了し、ディレクトリとバイナリに対する正しいアクセス許可があることを確認します。

    sudo su -
  2. 次のコマンドを実行して、OpenSSL のバージョンを書き留めておきます。

    openssl version
  3. /root/build ディレクトリに最新の OpenSSL バイナリをダウンロードします。次ののコマンドを実行して、ディレクトリをセットアップします。

    mkdir $HOME/buildmkdir -p $HOME/local/ssl
    cd $HOME/build
  4. OpensSSL のウェブサイトから最新の OpenSSL バージョンをダウンロードします。

  5. 次のコマンドを使用して、バイナリをダウンロードして解凍します。
    注:openssl-1.1.1d.tar.gzステップ 4 の最新の OpenSSL バージョンに置き換えます。

    curl -O https://www.openssl.org/source/openssl-1.1.1d.tar.gztar -zxf openssl-1.1.1d.tar.gz
  6. パッチをインストールし、パッチを適用する gcc ツールを作成してから、ダウンロードしたバイナリをコンパイルします。

    yum install patch make gcc -y
  7. このブロックをコピーして貼り付け、デバイスで [Enter] を選択します。
    **注:**OpenSSL-1.1.1d 以外のバージョンを使用している場合は、ディレクトリの変更が必要になることがあります。OpenSSL の新しいバージョンでは、これらのコマンドを更新する必要がある可能性があります。更新しないと、このパッチが機能しないことがあります。

    cat <<-EOF | patch -d $HOME/build/ -p0diff -ur orig/openssl-1.1.1d/apps/enc.c openssl-1.1.1d/apps/enc.c
    --- orig/openssl-1.1.1d/apps/enc.c      
    +++ openssl-1.1.1d/apps/enc.c   
    @@ -533,6 +533,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

    パッチ適用が成功したことを確認する次のような出力が表示されます。

    [root@ip-172-31-20-119 ~]# cat <<-EOF | patch -d $HOME/build/ -p0 diff -ur orig/openssl-1.1.1d/apps/enc.c openssl-1.1.1d/apps/enc.c
    --- orig/openssl-1.1.1d/apps/enc.c
    +++ openssl-l.1.1d/apps/enc.c
    @@ -533,6 +533,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.1d/apps/enc.c
  8. 次のコマンドを実行して、OpenSSL enc.c ファイルをコンパイルします。
    注: 各コマンドのコンパイルには数分かかる場合があります。

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

    OpenSSL の最新バージョンが正常にインストールされました。このバージョンの OpenSSL は、$HOME/local/ssl/lib/ ディレクトリ内のライブラリに動的にリンクされており、シェルで直接実行することはできません。

  9. 環境変数 LD_LIBRARY_PATH を設定して、関連ライブラリが OpenSSL で使用できるようにします。
    ヒント:OpenSSL-1.1.1d を複数回実行する必要があるため、バイナリを実行する前に、$HOME/local/ssl/lib/ パスをロードする openssl.sh という名前のスクリプトを作成します。

    cd $HOME/local/bin/
    echo -e '#!/bin/bash \nenv LD_LIBRARY_PATH=$HOME/local/lib/ $HOME/local/bin/openssl "$@"' > ./openssl.sh
  10. 次のコマンドを使用して、スクリプトで実行ビットを設定します。

chmod 755 ./openssl.sh
  1. OpenSSL-1.1.1 を起動するには、次のコマンドを実行します。
$HOME/local/bin/openssl.sh

ヒント: 後で $HOME/local/bin/openssl.sh コマンドを使用して、パッチを適用したバージョンの OpenSSL を環境変数で実行できます。これにより、複数のコマンドを実行するときに、パッチを適用したバージョンの OpenSSL を参照できます。 コマンドプロンプトが表示されます。OpenSSL のバージョンを確認するには、version と入力してからデバイスで [Enter] を選択します。 コマンドプロンプトを終了するには、quit と入力してデバイスで [Enter] を選択します。 エイリアスを設定するには、次のコマンドを実行するか、.bash\ _profile に追加します。

alias OPENSSL_V111="$HOME/local/bin/openssl.sh"
  1. 指示に従って、OpenSSL で CloudHSM にキーを安全に転送します

関連情報

Supported mechanisms

AWS公式
AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ