文档首页> 数据加密服务 DEW> 常见问题> 密钥管理类> 如何修补OpenSSL以使用-id-aes256-wrap-pad包装非对称密钥?
更新时间:2021-11-02 GMT+08:00
分享

如何修补OpenSSL以使用-id-aes256-wrap-pad包装非对称密钥?

问题描述

默认情况下,OpenSSL命令行工具中未启用包装密码算法-id-aes256-wrap-pad。您可以下载并安装最新版本的OpenSSL,然后对其进行修补,以完成导入非对称密钥所需的信封包装。

解决方法

按照以下说明,使用bash命令创建已有OpenSSL的本地副本,而无需删除或更改OpenSSL的客户端默认安装。

  1. root用户完成以下操作步骤,以确保您对使用此命令的目录和二进制文件拥有正确的权限。

    sudo su -

  2. 运行此命令并记下OpenSSL版本。

    openssl version

  3. 在/root/build目录中下载最新的OpenSSL二进制文件。运行以下命令以设置目录。

    mkdir $HOME/build

    mkdir -p $HOME/local/ssl

    cd $HOME/build

  4. 记住从下载页面(https://www.openssl.org/source/)下载的最新OpenSSL版本。
  5. 使用以下命令下载并解压缩二进制文件。
  6. 将openssl-1.1.1d.tar.gz替换为步骤4中的最新OpenSSL版本。

    curl -O https://www.openssl.org/source/openssl-1.1.1d.tar.gz

    tar -zxf openssl-1.1.1d.tar.gz

  7. 安装修补程序,使gcc工具进行修补,然后编译已下载的二进制文件。

    yum install patch make gcc -y

    如果您使用的版本与OpenSSL-1.1.1d不同,您可能需要更改目录。您可能需要为更新的OpenSSL的版本更新这些命令,否则此修补程序可能无法正常工作。

  8. 复制并粘贴此数据块,然后在您的设备上选择输入。

    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@linux ~]# 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

  9. 运行此命令来编译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

  10. 成功安装最新版本的OpenSSL后,此版本的OpenSSL已与$HOME/local/ssl/lib/目录中的二进制文件动态链接,您的shell无法直接运行它。设置环境变量LD_LIBRARY_PATH,以确保有相关的库可用于OpenSSL。
  11. 由于您需要多次运行修复版本的OpenSSL,请创建一个名为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

  12. 使用以下命令在脚本上设置执行位。

    chmod 755 ./openssl.sh

  13. 要启动修复版本的OpenSSL,请执行此命令。

    $HOME/local/bin/openssl.sh

分享:

密钥管理类所有常见问题

more

close