キー・マテリアルをラップするためのOpenSSLパッチの構成

CLIでサポートされているOpenSSLパッチでRSA_OAEP_AES_SHA256を使用してキー・マテリアルをラップする方法について学習します。

RSA_AES_KEY_WRAPと互換性のあるOpenSSL -id-aes256-wrap-pad暗号は、OCI CLIではデフォルトで有効になっていません。OpenSSLにパッチを適用して、CKM_RSA_AES_KEY_WRAPメカニズムに必要なエンベロープ・ラッピングを許可します。

ノート

「Bring your own key(BYOK)」シナリオでは、RSA_OAEP_AES_SHA256ラッピングのOpenSSLにパッチを適用する必要があります。

システム内のOpenSSLのデフォルト・インストールを変更せずに、CLIを使用してOpenSSL v1.1.1dの新しいローカル・コピーをダウンロード、コンパイルおよび実行するには、次のステップを実行します。

  1. /root/buildに最新のOpenSSLバイナリを格納するディレクトリを作成します。
    mkdir $HOME/build
    mkdir -p $HOME/local/ssl
    cd $HOME/build
  2. 次のコマンドを実行し、OpenSSLバージョンをメモします:
    openssl version
  3. 最新のOpenSSLバージョン(https://www.openssl.org/source/)に注意してください。
  4. ライブラリをダウンロードして展開します。
    openssl-1.1.1d.tar.gzをステップ3の最新バージョンに置き換えます。
    curl -O https://www.openssl.org/source/openssl-1.1.1d.tar.gz
    tar -zxf openssl-1.1.1d.tar.gz
  5. パッチをインストールし、gccツールでパッチを適用してから、バイナリをコンパイルします。
    sudo yum install patch make gcc -y
  6. 次のコマンドを実行します。
    ノート

    新しいバージョンのOpenSSLでは、これらのコマンドを更新する必要がある場合があります。
    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-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
  7. 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が正常にインストールされました。このバージョンは、$HOME/local/ssl/lib/ディレクトリ内のライブラリに動的にリンクされ、直接実行することはできません。環境変数LD_LIBRARY_PATHを設定して、関連付けられているライブラリがOpenSSLで使用可能であることを確認します。
  8. バイナリを実行する前に$HOME/local/ssl/lib/パスをロードするopenssl.shという名前のスクリプトを作成します。これにより、OpenSSLを複数回実行することが容易になります。
    cd $HOME/local/bin/
    
    echo -e '#!/bin/bash \nenv LD_LIBRARY_PATH=$HOME/local/lib/ $HOME/local/bin/openssl "$@"' > ./openssl.sh
  9. スクリプトの実行ビットを設定します。
    chmod 755 ./openssl.sh
  10. 次のコマンドを使用してOpenSSLを起動します:
    $HOME/local/bin/openssl.sh