Обновление OpenSSL до версии 1.1.0 в Ubuntu Server 16.04.

На днях мне понадобилось обновить версию OpenSSL в Ubuntu Server 16.04, для поддержки шифра CHACHA20-POLY1305, я хотел использовать этот шифр в HTTPS шифровании трафика. По умолчанию Ubuntu Server поставляется вместе с OpenSSL версии 1.0.2, не поддерживающей нужного мне шифра, а в системных репозиториях Ubuntu свежая версия отсутствует. Поэтому чтобы получить последнюю версию OpenSSL, ее приходится собирать из исходников.

Существует еще один способ достижения нужного результата, это пересборка Nginx вместе с версией OpenSSL 1.1.0, отдельно подключаемой при конфигурации. Но поскольку все делалось с нуля, на чистой системе, то я решил просто обновить версию OpenSSL, а потом поставить сверху нее все что нужно.

Нужно установить пакет build-essential, чтобы скомпилировать OpenSSL из исходников. Заодно я ставлю libssl-dev, для поддержки HTTPS, пригодится в дальнейшем при сборке Nginx.

apt-get install build-essential libssl-dev -y

Перейдем в рабочий каталог /usr/local/src.

cd /usr/local/src

Скачиваем архив с последней версией OpenSSL.

wget https://www.openssl.org/source/latest.tar.gz -O openssl-1.1.0.tar.gz

Распакуем архив.

tar -zxvf openssl-1.1.0.tar.gz

Переходим в каталог с распакованным архивом.

cd openssl-1.1.0f

Задаем конфигурацию.

./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl -Wl,-rpath,/usr/local/ssl/lib

Компилируем и проверяем.

make && make test

Устанавливаем.

make install

Заменяем старый openssl файл из каталога /bin на новый. Старый файл убираем, потом делаем ссылку на новый.

mv /usr/bin/openssl /root/

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

Проверяем установленную версию.

openssl version
OpenSSL 1.1.0f  25 May 2017

А вот то, ради чего все затевалось. Поддержка нужных шифров CHACHA20.

openssl ciphers -v 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305'
ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH     Au=RSA  Enc=CHACHA20/POLY1305(256) Mac=AEAD

Спасибо за внимание.

Ответить:

Please enter your comment!
Please enter your name here