В 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