Как обновить OpenSSL в CentOS 6.5 / Linux / Unix из исходного кода?
Как мне обновить OpenSSL в CentOS 6.5?
Я использовал эти команды, но ничего не происходит:
cd /usr/src
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
tar -zxf openssl-1.0.1g.tar.gz
cd openssl-1.0.1g
./config
make
make test
make install
cd /usr/src
rm -rf openssl-1.0.1g.tar.gz
rm -rf openssl-1.0.1g
После использования этой команды я получаю старую версию
openssl version
11 ответов
./config --prefix=/usr --openssldir=/usr/local/openssl shared
Попробуйте эту строку конфигурации вместо перезаписать значение по умолчанию. Он устанавливается в префикс / usr / local / ssl по умолчанию в вашей настройке, когда вы отключаете префикс. Вы, вероятно, используете "/ usr / local / ssl / bin / openssl" вместо перезаписи / usr / bin / openssl. Вместо этого вы также можете использовать / usr / local для префикса, но вам нужно будет соответствующим образом скорректировать свой путь, если его еще нет на вашем пути. Вот документация INSTALL:
$ ./config
$ make
$ make test
$ make install
[If any of these steps fails, see section Installation in Detail below.]
This will build and install OpenSSL in the default location, which is (for
historical reasons) /usr/local/ssl. If you want to install it anywhere else,
run config like this:
$ ./config --prefix=/usr/local --openssldir=/usr/local/openssl
https://github.com/openssl/openssl/blob/master/INSTALL http://heartbleed.com/
Исправление для heartbleed
уязвимость была перенесена в 1.0.1e-16
Red Hat для Enterprise Linux, и поэтому это официальное исправление, которое поставляется CentOS.
Замена OpenSSL последней версией из апстрима (т. Е. 1.0.1g) рискует внести изменения в функциональность, которые могут привести к непредсказуемым нарушениям совместимости с приложениями / клиентами, вызвать отклонение вашей системы от RHEL и поставить вас на крючок для личного обслуживания. будущие обновления этого пакета. Замена openssl с помощью простой make config && make && make install означает, что вы также потеряете возможность использовать rpm для управления этим пакетом и выполнения запросов к нему (например, проверка наличия всех файлов, которые не были изменены или были изменены разрешения). без обновления базы данных RPM).
Я также предупреждаю, что криптопрограмма может быть чрезвычайно чувствительной к кажущимся незначительным вещам, таким как параметры компилятора, и если вы не знаете, что делаете, вы можете внести уязвимости в вашу локальную установку.
Чтобы вручную скомпилировать OpenSSL, сделайте следующее:
$ cd /usr/src
$ wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz -O openssl-1.0.1g.tar.gz
$ tar -zxf openssl-1.0.1g.tar.gz
$ cd openssl-1.0.1g
$ ./config
$ make
$ make test
$ make install
$ openssl version
Если это показывает старую версию, сделайте шаги ниже.
$ mv /usr/bin/openssl /root/
$ ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
openssl version
OpenSSL 1.0.1g 7 Apr 2014
http://olaitanmayowa.com/heartbleed-how-to-upgrade-openssl-in-centos/
sudo yum update openssl
это все, что тебе нужно.
Это приведет вас к openssl-1.0.1e-16.el6_5.7
,
Вам нужно перезапустить Apache после обновления. Или, что еще лучше, перезагрузите коробку, если это возможно, чтобы все приложения, использующие OpenSSL, загрузили новую версию.
Единственное, что вам нужно сделать, это выполнить yum update
,
Он автоматически загрузит и обновит резервную версию openssl-1.0.1e-16.el6_5.7
который был исправлен RedHat с отключенным сердцебиением.
Чтобы проверить обновление, просто проверьте журнал изменений:# rpm -q --changelog openssl-1.0.1e | grep -B 1 CVE-2014-0160
вы должны увидеть следующее:* Mon Apr 07 2014 Tomáš Mráz <tmraz@redhat.com> 1.0.1e-16.7
- fix CVE-2014-0160 - information disclosure in TLS heartbeat extension
Обязательно перезагрузите сервер, потому что важные службы, такие как Apache и SSH, используют openSSL.
Мой подход был:
openssl version
OpenSSL 1.0.1e 11 Feb 2013
wget https://www.openssl.org/source/openssl-1.0.2a.tar.gz
wget http://www.linuxfromscratch.org/patches/blfs/svn/openssl-1.0.2a-fix_parallel_build-1.patch
tar xzf openssl-1.0.2a.tar.gz
cd openssl-1.0.2a
patch -Np1 -i ../openssl-1.0.2a-fix_parallel_build-1.patch
./config --prefix=/usr --openssldir=/etc/ssl --libdir=lib shared zlib-dynamic
make
make install
openssl version
OpenSSL 1.0.2a 19 Mar 2015
Я согласен, что в 95% случаев все, что вам нужно, это sudo yum update openssl
Однако, если вам нужна конкретная версия openssl или определенная функциональность, которой нет в репозитории CentOS, вам, вероятно, нужно скомпилировать из исходного кода. Другие ответы здесь были неполными. Ниже описано, что сработало (CentOS 6.9), хотя это может привести к несовместимости с установленным программным обеспечением и не приведет к автоматическому обновлению openssl.
Выберите версию openssl с https://www.openssl.org/source/
- На момент написания статьи 1 июля 2017 года нужная версия была датирована 2017-May-25 13:09:51, openssl-1.1.0f.tar.gz
- Скопируйте нужную ссылку и используйте ниже, в нашем случае ( https://www.openssl.org/source/openssl-1.1.0f.tar.gz)
Войдите в систему как root:
cd /usr/local/src/
# OPTIONALLY CHANGE openssl-1.1.0f.tar.gz to the version which you want
wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz
sha256sum openssl-1.1.0f.tar.gz #confirm this matches the published hash
tar -zxf openssl-1.1.0f.tar.gz
cd /usr/local/src/openssl-1.1.0f
./config --prefix=/usr/local --openssldir=/usr/local/openssl
make
make test
make install
export LD_LIBRARY_PATH=/usr/local/lib64
#make export permanent
echo "export LD_LIBRARY_PATH=/usr/local/lib64" > /etc/profile.d/ld_library_path.sh
chmod ugo+x /etc/profile.d/ld_library_path.sh
openssl version #confirm it works
#recommended reboot here
openssl version #confirm it works after reboot
Вы также можете проверить локальный журнал изменений, чтобы проверить, исправлен ли OpenSSL на уязвимость с помощью следующей команды:
rpm -q --changelog openssl | grep CVE-2014-0224
Если результат не возвращается, вы должны исправить OpenSSL.
http://www.liquidweb.com/kb/update-and-patch-openssl-for-the-ccs-injection-vulnerability/
rpm -qa openssl
yum clean all && yum update "openssl*"
lsof -n | grep ssl | grep DEL
cd /usr/src
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
tar -zxf openssl-1.0.1g.tar.gz
cd openssl-1.0.1g
./config --prefix=/usr --openssldir=/usr/local/openssl shared
./config
make
make test
make install
cd /usr/src
rm -rf openssl-1.0.1g.tar.gz
rm -rf openssl-1.0.1g
а также
openssl version
Это легко! вы скачиваете бинарный файл? загрузите последний пакет rpm openssl-1.0.1e-30.el6.x86_64, проверьте текущую версию, используя rpm -q openssl. если это старше, тогда выполните rpm -U openssl-1.0.1e-30.el6.x86_64 . если yum настроен, обновите этот пакет в репозитории и выполните yum update openssl, если ваш репозиторий в RHN просто, yum update openssl-1.0.1g очень старый и уязвимый
Вы должны заменить старый двоичный файл OpenSSL новым через символическую ссылку:
sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`
Помните, что после этой процедуры вы должны перезагрузить сервер или перезапустить все службы, связанные с OpenSSL.