Предыстория. Имеется PKI-сервер на базе ОС Linux и Easy-RSA скрипта.
Снятые с поддержки версии OpenSSL:
Актуальные версии:
В статьях в сети предлагается удалить снятые с поддержки openssl-версии. Однако, если есть необходимость поддерживать legacy, лучше этого не делать. Разные версии OpenSSL поддерживают (зависимо от сборки) разные алгоритмы, hash-функции и пр. и имеют разный набор команд!
Скачать версию 3.2.0
Скачать версию 3.2.1
Актуальная Dev-версия (на момент написания статьи актуальная dev-версия 3.3.0-dev)
sudo dnf -y groupinstall "Development Tools"
sudo dnf -y install perl-IPC-Cmd perl-Pod-Html
sudo dnf -y install git
Скачиваем нужную версию (я опишу установку соседским способом)
mkdir /tmp/openssl
cd /tmp/openssl
wget https://www.openssl.org/source/openssl-3.0.11.tar.gz
wget https://www.openssl.org/source/openssl-3.1.3.tar.gz
wget https://www.openssl.org/source/openssl-3.2.0.tar.gz
git clone https://github.com/openssl/openssl.git
tar -xzvf openssl-3.0.11.tar.gz
tar -xzvf openssl-3.1.13.tar.gz
tar -xzvf openssl-3.2.0.tar.gz
Важно: Сборка и установка версий должна идти строго в порядке возрастания версий
cd /tmp/openssl/openssl-3.0.11/
./config --prefix=/usr/local/openssl/3.0.11 --openssldir=/usr/local/openssl/3.0.11
make -j $(nproc)
sudo make install
sudo mv /usr/local/openssl/3.0.11/bin/openssl /usr/local/openssl/3.0.11/bin/openssl3
cd /tmp/openssl/openssl-3.1.13/
./config --prefix=/usr/local/openssl/3.1.13 --openssldir=/usr/local/openssl/3.1.13
make -j $(nproc)
sudo make install
sudo mv /usr/local/openssl/3.1.13/bin/openssl /usr/local/openssl/3.1.13/bin/openssl3
cd /tmp/openssl/openssl-3.2.0/
./config --prefix=/usr/local/openssl/3.2.0 --openssldir=/usr/local/openssl/3.2.0
make -j $(nproc)
sudo make install
sudo mv /usr/local/openssl/3.2.0/bin/openssl /usr/local/openssl/3.2.0/bin/openssl3
cd /tmp/openssl/openssl-3.3.0/
./config --prefix=/usr/local/openssl/3.3.0-dev --openssldir=/usr/local/openssl/3.3.0-dev
make -j $(nproc)
sudo make install
sudo mv /usr/local/openssl/3.3.0/bin/openssl /usr/local/openssl/3.3.0/bin/openssl3
В папке нужного пользователя делаем необходимые экспорты:
/home/admin/.bashrc
:
export PATH=$PATH:/usr/local/openssl/current/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/current/lib:/usr/local/openssl/current/lib64
Делаем re-login, либо source ~/.bashrc
Переключение версий работает «на лету», не требует re-login, reboot и пр.
sudo rm -f /usr/local/openssl/current
sudo ln -s /usr/local/openssl/[нужная версия] /usr/local/openssl/current
Проверяем версии OpenSSL
openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
openssl3 version
OpenSSL 3.3.0-dev (Library: OpenSSL 3.3.0-dev )
В скрипте easyrsa/vars
указываем переменную:
# Для использования current
set_var EASYRSA_OPENSSL "openssl3"
# Для использования предустановленной версии OpenSSL
set_var EASYRSA_OPENSSL "openssl"
# Для использования конкретной версии
set_var EASYRSA_OPENSSL "/usr/local/openssl/[версия]/bin/openssl3"
При сборке единственной версии OpenSSL 3.x для всех пользователей системы:
sudo ldconfig
sudo tee /etc/profile.d/openssl.sh<<EOF
export PATH=/usr/local/openssl/bin:\$PATH
export LD_LIBRARY_PATH=/usr/local/openssl/lib:/usr/local/openssl/lib64:\$LD_LIBRARY_PATH
EOF
source /etc/profile.d/openssl.sh