Обновление OpenSSL на CentOS — последствия

в 15:15, , рубрики: CentOS, centos 6, linux, openssh, openssl, ssh, sshd, update, метки: , , , , , ,

Всем привет!
Не так давно, возникла задача в обновление openssl на CentOS. Информации о репозиториях, откуда можно обновиться до последней стабильной версии, я не нашел и решил сделать все вручную. Но вот одна загвоздка, после успешного обновления я чуть не потерял удаленный доступ к серверу — ssh перестал работать. Данный материал, посвящен тем, кто планирует обновиться в ручную, как я.

И так. Смотрим текущую версию openssl и видим:

[root@server ~]# openssl version
OpenSSL 1.0.0-fips 29 Mar 2010

Этот OpenSSL входит в состав стандартного репозитория CentOS 6.

[root@server ~]# uname -r
2.6.32-279.1.1.el6.x86_64

Ну, поехали обновляться. Для этого идем на официальный сайт www.openssl.org и скачиваем свежую версию openssl-1.0.1c.tar.gz.
Распаковываем дистрибутив.

[root@server ~]# tar -xvzf openssl-1.0.0c.tar.gz

Переходим в директорию.

[root@server ~]# cd openssl-1.0.0c

И приступаем к сборке. Одно замечание, ставил openssl я в стандартную директорию по умолчанию, что и привело к падению ssh, которое я опишу ниже. Я вам советую, не повторять мой подвиг и ставиться, например, в /usr/local/ssl, после чего с помощью ldconfig — дать знать о существовании новой сборки OpenSSL. Но увы, в тот момент, я не подумал об этом и собрал OpenSSL следующим образом.

[root@server ~]# ./config --prefix=/usr --openssldir=/usr/ssl
[root@server ~]# make
[root@server ~]# make test
[root@server ~]# make install
[root@server ~]# 
[root@server ~]# ./config shared --prefix=/usr --openssldir=/usr/ssl
[root@server ~]# make clean
[root@server ~]# make
[root@server ~]# make install

Вуаля, мы обновились… Проверяем.

[root@server ~]# openssl version
OpenSSL 1.0.1c 10 May 2012

А вот теперь самое интересное. Пробуем, сделать ssh на наш сервер.

[sub@t4u ~]# ssh t4u@server
ssh_exchange_identification: Connection closed by remote host

На любой ключ, ssh начнет ругаться «OpenSSL version mismatch.» Не отчаиваемся, и скачиваем последнюю стабильную версию OpenSSH, для того, чтобы обновиться уже с новым OpenSSL. Дистрибутив, можно скачать с официального сайта openbsd.org.
Скачиваем, распаковываем и ставим:

[root@server ~]# ./configure --prefix=/usr --with-ssl-dir=/usr/ssl
[root@server ~]# make
[root@server ~]# make install

Перезапускаем sshd.

[root@server ~]# /etc/init.d/sshd restart

Собственно все. Можно жить дальше.
Всем удачи!

Автор: t4u

  1. dragomir:

    привет. вчера обновил openssl для того, чтоб сделать ЦП для запрета сайтов )))
    но я ставил её в отдельную директорию в корне /gost-ssl
    а сегодня на утро
    ssh_exchange_identification: Connection closed by remote host
    как такое могло произойти…
    ведь директория другая…

  2. dragomir:

    сам дурак, разобрался. сделал изменения для gost в основном старом конфиге openssl оказывается и забыл удалить их

* - обязательные к заполнению поля