Por que não posso encapsular chaves assimétricas usando -id-aes256-wrap-pad no OpenSSL?
Sintoma
Por padrão, o algoritmo -id-aes256-wrap-pad não está ativado no OpenSSL. Para encapsular uma chave, atualize o OpenSSL para a versão mais recente e aplique o patch primeiro.
Solução
Use os comandos bash para criar uma cópia local do OpenSSL existente. Não é necessário excluir ou modificar as configurações de instalação do cliente do OpenSSL padrão.
- Alterne para o usuário root.
sudo su -
- Execute o seguinte comando e registre a versão do OpenSSL:
openssl version
- Execute os seguintes comandos para criar o diretório /root/build. Este diretório será usado para armazenar o arquivo binário do OpenSSL mais recente.
mkdir $HOME/build
mkdir -p $HOME/local/ssl
cd $HOME/build
- Baixe a versão mais recente do OpenSSL em https://www.openssl.org/source/.
- Baixe e descompacte o arquivo binário.
- Substitua openssl-1.1.1d.tar.gz pela versão mais recente do OpenSSL baixada na etapa 4.
curl -O https://www.openssl.org/source/openssl-1.1.1d.tar.gz
tar -zxf openssl-1.1.1d.tar.gz
- Use a ferramenta gcc para corrigir a versão e compilar o arquivo binário baixado.
yum install patch make gcc -y
Se você estiver usando uma versão diferente do OpenSSL-1.1.1d, talvez seja necessário alterar o diretório e os comandos usados, ou esse patch pode não funcionar corretamente.
- Execute os seguintes comandos:
sed -i "/BIO_get_cipher_ctx(benc, &ctx);/a\ EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPHER_CTX_FLAG_WRAP_ALLOW);" $HOME/build/openssl-1.1.1d/apps/enc.c
- Execute os seguintes comandos para compilar o arquivo enc.c do OpenSSL:
cd $HOME/build/openssl-1.1.1d/
./config --prefix=$HOME/local --openssldir=$HOME/local/ssl
make -j$(grep -c ^processor /proc/cpuinfo)
make install
- Configure a variável de ambiente LD_LIBRARY_PATH para garantir que as bibliotecas necessárias estejam disponíveis para OpenSSL. A versão mais recente do OpenSSL foi vinculada dinamicamente ao arquivo binário no diretório $HOME/local/ssl/lib/ e não pode ser executada diretamente no shell.
- Crie um script chamado openssl.sh para carregar o caminho $HOME/local/ssl/lib/ antes de executar o arquivo binário.
cd $HOME/local/bin/
echo -e '#!/bin/bash \nenv LD_LIBRARY_PATH=$HOME/local/lib/ $HOME/local/bin/openssl "$@"' > ./openssl.sh
- Execute o seguinte comando para configurar um bit de execução no script:
chmod 755 ./openssl.sh
- Execute o seguinte comando para iniciar a versão do OpenSSL corrigida:
$HOME/local/bin/openssl.sh