Как обновить OpenSSL до последней версии в CentOS 6

archive view archive save

openssl-vulnerability-fix-on-centos6.jpg В CentOS 6 установлена довольно старая и уязвимая версия OpenSSL 1.0.1e-fips 11 Feb 2013. В репозиториях свежего пакета OpenSSL для CentOS 6 не обнаружено, ну и не надо - соберём самостоятельно.

В данном случае OpenSSL обновляется в CentOS 6.10.

Проверка установленной версии OpenSSL

rpm -qa|grep openssl
openssl-1.0.1e-57.el6.x86_64
openssl-devel-1.0.1e-57.el6.x86_64
 
openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
 
/usr/bin/openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
 
locate openssl|less
/usr/bin/openssl
/usr/include/openssl
/usr/include/openssl/aes.h
/usr/include/openssl/asn1.h
/usr/include/openssl/asn1_mac.h
/usr/include/openssl/asn1t.h
/usr/include/openssl/bio.h
/usr/include/openssl/blowfish.h
/usr/include/openssl/bn.h
/usr/include/openssl/buffer.h
/usr/include/openssl/camellia.h
/usr/include/openssl/cast.h
/usr/include/openssl/cmac.h
/usr/include/openssl/cms.h
/usr/include/openssl/comp.h
/usr/include/openssl/conf.h
/usr/include/openssl/conf_api.h
/usr/include/openssl/crypto.h
/usr/include/openssl/des.h
/usr/include/openssl/des_old.h
/usr/include/openssl/dh.h
/usr/include/openssl/dsa.h
/usr/include/openssl/dso.h
/usr/include/openssl/dtls1.h
/usr/include/openssl/e_os2.h
/usr/include/openssl/ebcdic.h
/usr/include/openssl/ec.h
/usr/include/openssl/ecdh.h
/usr/include/openssl/ecdsa.h
/usr/include/openssl/engine.h
/usr/include/openssl/err.h
/usr/include/openssl/evp.h
/usr/include/openssl/fips.h
/usr/include/openssl/fips_rand.h
/usr/include/openssl/hmac.h
/usr/include/openssl/idea.h
/usr/include/openssl/krb5_asn.h
/usr/include/openssl/kssl.h
/usr/include/openssl/lhash.h
/usr/include/openssl/md2.h
/usr/include/openssl/md4.h
/usr/include/openssl/md5.h
/usr/include/openssl/modes.h
/usr/include/openssl/obj_mac.h
/usr/include/openssl/objects.h
/usr/include/openssl/ocsp.h
/usr/include/openssl/opensslconf-x86_64.h
/usr/include/openssl/opensslconf.h
/usr/include/openssl/opensslv.h
/usr/include/openssl/ossl_typ.h
/usr/include/openssl/pem.h
/usr/include/openssl/pem2.h
/usr/include/openssl/pkcs12.h
/usr/include/openssl/pkcs7.h
/usr/include/openssl/pqueue.h
/usr/include/openssl/rand.h
/usr/include/openssl/rc2.h
/usr/include/openssl/rc4.h
/usr/include/openssl/ripemd.h
/usr/include/openssl/rsa.h
/usr/include/openssl/safestack.h
/usr/include/openssl/seed.h
/usr/include/openssl/sha.h
/usr/include/openssl/srtp.h
/usr/include/openssl/ssl.h
/usr/include/openssl/ssl2.h
/usr/include/openssl/ssl23.h
/usr/include/openssl/ssl3.h
/usr/include/openssl/stack.h
/usr/include/openssl/symhacks.h
/usr/include/openssl/tls1.h
/usr/include/openssl/ts.h
/usr/include/openssl/txt_db.h
/usr/include/openssl/ui.h
/usr/include/openssl/ui_compat.h
/usr/include/openssl/whrlpool.h
/usr/include/openssl/x509.h
/usr/include/openssl/x509_vfy.h
/usr/include/openssl/x509v3.h
...
/usr/lib64/openssl
/usr/lib64/openssl/engines
/usr/lib64/openssl/engines/lib4758cca.so
/usr/lib64/openssl/engines/libaep.so
/usr/lib64/openssl/engines/libatalla.so
/usr/lib64/openssl/engines/libcapi.so
/usr/lib64/openssl/engines/libchil.so
/usr/lib64/openssl/engines/libcswift.so
/usr/lib64/openssl/engines/libgmp.so
/usr/lib64/openssl/engines/libnuron.so
/usr/lib64/openssl/engines/libpadlock.so
/usr/lib64/openssl/engines/libsureware.so
/usr/lib64/openssl/engines/libubsec.so
/usr/lib64/pkgconfig/openssl.pc

Резервне копии старой версии OpenSSL

С помощью yum-versionlock запретим обновление пакетов openssl и openssl-devel

yum versionlock openssl
Loaded plugins: fastestmirror, priorities, versionlock
Adding versionlock on: 0:openssl-1.0.1e-57.el6
versionlock added: 1
 
yum versionlock openssl-devel
Loaded plugins: fastestmirror, priorities, versionlock
Adding versionlock on: 0:openssl-devel-1.0.1e-57.el6
versionlock added: 1

Конфигурационные файлы yum-versionlock:

/etc/yum/pluginconf.d/versionlock.conf
/etc/yum/pluginconf.d/versionlock.list

Сделаем резервне копии файлов старой версии OpenSSL:

mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
mv /usr/lib64/openssl /usr/lib64/openssl.bak

Получение и сборка самой свежей версии OpenSSL

Вданном примере рабочим каталогом, в который будет загружен исходный код, будет /usr/local/src/security, но можно это делать в любом каталоге, например хоть в /tmp. Однако, для автоматического удаления (если потребуется) с помощью "make uninstall" рекомендуется сохранить каталог с исходным кодом, вчастности файл Makefile создаваемый после выполнения "./config".

Список доступных версий можно получить по ссылке: https://www.openssl.org/source/. На текущий момент самой последней версией OpenSSL является - openssl-1.1.1a.tar.gz, скачиваем и распаковываем:

cd /usr/local/src/security
 
wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz
tar -zxf openssl-1.1.1a.tar.gz && \
    rm -f openssl-1.1.1a.tar.gz \
    && cd openssl-1.1.1a

Больше о доступных флагах скрипта конфигурации ./config можно найти в файле INSTALL:

less INSTALL
 
--openssldir=DIR
                  Directory for OpenSSL configuration files, and also the default certificate and key store.  Defaults are: /usr/local/ssl
 
                  In CentOS 6 --openssldir=/etc/ssl
 
--prefix=DIR
                  The top of the installation directory tree.  Defaults are: /usr/local
 
                  In CentOS 6 --prefix=/usr
 
zlib
                  Build with support for zlib compression/decompression.
 
This will install all the software components in this directory tree under PREFIX (the directory given with --prefix or its default):
 
       Unix:
 
         bin/           Contains the openssl binary and a few other
                        utility scripts.
         include/openssl
                        Contains the header files needed if you want
                        to build your own programs that use libcrypto
                        or libssl.
         lib            Contains the OpenSSL library files.
         lib/engines    Contains the OpenSSL dynamically loadable engines.
 
         share/man/man1 Contains the OpenSSL command line man-pages.
         share/man/man3 Contains the OpenSSL library calls man-pages.
         share/man/man5 Contains the OpenSSL configuration format man-pages.
         share/man/man7 Contains the OpenSSL other misc man-pages.
 
         share/doc/openssl/html/man1
         share/doc/openssl/html/man3
         share/doc/openssl/html/man5
         share/doc/openssl/html/man7
                        Contains the HTML rendition of the man-pages.

Конфигурация по умолчанию (./config) установит OpenSSL в следующие директории по умолчанию:

less Makefile
...
# DESTDIR is for package builders so that they can configure for, say,
# /usr/ and yet have everything installed to /tmp/somedir/usr/.
# Normally it is left empty.
DESTDIR=
 
# Do not edit these manually. Use Configure with --prefix or --openssldir
# to change this!  Short explanation in the top comment in Configure
INSTALLTOP=/usr/local
OPENSSLDIR=/usr/local/ssl
LIBDIR=lib64
# $(libdir) is chosen to be compatible with the GNU coding standards
libdir=$(INSTALLTOP)/$(LIBDIR)
ENGINESDIR=$(libdir)/engines-1.1
 
# Convenience variable for those who want to set the rpath in shared
# libraries and applications
LIBRPATH=$(libdir)
 
MANDIR=$(INSTALLTOP)/share/man
DOCDIR=$(INSTALLTOP)/share/doc/$(BASENAME)
HTMLDIR=$(DOCDIR)/html
 
# MANSUFFIX is for the benefit of anyone who may want to have a suffix
# appended after the manpage file section number.  "ssl" is popular,
# resulting in files such as config.5ssl rather than config.5.
MANSUFFIX=
HTMLSUFFIX=html
 
make
make test
make install
 
updatedb && locate openssl|less
...
/usr/local/bin/openssl
/usr/local/include/openssl
/usr/local/ssl
/usr/local/share/doc/openssl/
/usr/local/lib64/engines-1.1

После распихуивания файлов OpenSSL в директории по умолчанию мы получим проблему:

/usr/local/bin/openssl version
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

Которую можно исправить выполнив:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Но, этих танцев можно избежать пересобрать и установить OpenSSL в директории, в которые установлена старая версия openssl-1.0.1e:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

После этого файлы OpenSSL будут размещены в:

/usr/bin/openssl
/usr/include/openssl
/etc/ssl
/usr/share/doc/openssl/
/usr/lib64/*.*
/usr/lib64/libcrypto.so.1.1
/usr/lib64/engines-1.1
 
openssl version
OpenSSL 1.1.1a  20 Nov 2018

Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Комментарии в блоге
Новое на форуме