如何修補 OpenSSL 以啟用與 CloudHSM CKM_RSA_AES_KEY_WRAP 機制搭配使用?
我想將 AWS CloudHSM CKM_RSA_AES_KEY_WRAP 機制與 OpenSSL 搭配使用。
簡短描述
OpenSSL 命令列工具預設未啟用 OpenSSL cipher -id-aes256-wrap-pad 相容於 CloudHSM PKCS #11 機制 RSA_AES_KEY_WRAP。
下載並安裝最新版本的 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
-
執行此命令以根使用者身分完成所有步驟,以確保您對目錄和二進位檔案具有正確的許可:
sudo su -
-
執行此命令,然後記下 OpenSSL 版本:
openssl version
-
在 /root/build 目錄中下載最新的 OpenSSL 二進位檔案。執行下列命令來設定目錄:
mkdir $HOME/buildmkdir -p $HOME/local/ssl cd $HOME/build
-
記下 OpenSSL 網站中最新的 OpenSSL 下載版本。
-
下載二進位檔案,然後使用下列命令解壓縮:
注意:將 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
-
安裝修補程式,使 gcc 工具進行修補,然後編譯下載的二進位檔案:
yum install patch make gcc -y
-
複製並貼上此區塊,然後在裝置上選擇 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
-
執行此命令來編譯 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/ ** 目錄中的庫,您的 Shell 無法直接執行它。
-
設定環境變數 LD_LIBRARY_PATH,以確保關聯的程式庫可用於 OpenSSL。
**提示:**由於您必須多次執行 OpenSSL-1.1.1d,因此在執行二進位檔案之前,請建立名為 openssl.sh 的指令碼,以載入 $HOME/local/ssl/lib/ 路徑。cd $HOME/local/bin/ echo -e '#!/bin/bash \nenv LD_LIBRARY_PATH=$HOME/local/lib/ $HOME/local/bin/openssl "$@"' > ./openssl.sh
-
使用此命令設定指令碼上的執行位元:
chmod 755 ./openssl.sh
- 若要啟動 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"
相關資訊
相關內容
- AWS 官方已更新 3 年前
- AWS 官方已更新 5 個月前
- AWS 官方已更新 3 年前
- AWS 官方已更新 2 年前