Как обновить 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. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


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

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

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

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