简介
OpenSSL全称为Secure Socket Layer。是Netscape所研发。利用数据加密(Encryption)作技术保障在Internet上传输数据的安全。可确保数据在网络上的传输不会被窃听及截取。当然,OpenSSL是一个强大的password库,我们在使用SSL协议的时候不一定非得採用OpenSSL,只是眼下基本上都是用的OpenSSL,由于它更安全。使用起来也更简单。
官网:www.openssl.org
https://github.com/openssl/openssl
漏洞说明
低版本的OpenSSL存在多个安全漏洞,其中最为著名的漏洞是Heartbleed漏洞(CVE-2014-0160),这是一个严重的漏洞,可以允许攻击者从OpenSSL受影响的服务器上读取机密信息,例如加密密钥、会话令牌和其他敏感数据,而不需要进行身份验证。Heartbleed漏洞影响了OpenSSL 1.0.1版本至1.0.1f版本和1.0.2版本至1.0.2beta版本,这些版本在2012年3月14日至2014年4月7日期间发布。
除了Heartbleed漏洞外,低版本的OpenSSL还存在其他多个漏洞,例如POODLE漏洞(CVE-2014-3566)、BEAST漏洞(CVE-2011-3389)、FREAK漏洞(CVE-2015-0204)等等。这些漏洞都可能导致信息泄露或其他安全问题,因此使用最新版本的OpenSSL非常重要,以确保系统的安全性和稳定性。
OpenSSL 1.0.2k-fips是一种加强安全性的版本,其中的“fips”表示它符合美国联邦信息处理标准(FIPS)的安全要求。在该版本中,许多安全漏洞已被修复,包括Heartbleed漏洞、POODLE漏洞、BEAST漏洞等。但是,与任何软件一样,它可能会存在未知的漏洞或新的安全威胁。OpenSSL 1.0.2k-fips版本修复了Heartbleed漏洞。Heartbleed漏洞最初于2014年4月被公开披露,OpenSSL 1.0.2k-fips版本于2017年1月发布,其中包括对Heartbleed漏洞的修复。
因此,建议及时更新到最新版本的OpenSSL,以获取最新的安全修复和功能更新,并遵循最佳的安全实践,例如使用安全协议(例如TLS 1.2或更高版本)、启用必要的加密算法、禁用不安全的加密算法等,以最大程度地保护系统的安全性。同时,还应定期审查并更新系统中的所有软件包和依赖项,以确保系统的安全性。
在互联网安全协议OpenSSL v1.0.1到1.0.1f的password算法库中发现了一个很严重bug(CVE-2014-0160),该bug同意攻击者读取存在bug的系统的64k处理内存,暴露加密流量的密钥,用户的名字和password,以及訪问的内容。这个漏洞被称之为heartbleed,心脏流血。
据solidot 在April 7报道,OpenSSL已经公布了1.0.1g修复bug,Debian发行版也在半小时修复bug。Fedora公布了一个权宜的修正方案。该bug在2011年引入OpenSSL中。使用OpenSSL 0.9.8的发现版本号不受影响。但Debian Wheezy、Ubuntu 12.04.4、CentOS 6.5、Fedora 18、SUSE 12.2、OpenBSD 5.4、FreeBSD 8.4和NetBSD 5.0.2之后的版本号都收到影响。假设你的同意的系统有如上集中,建议将补丁修复到1.0.1g或以上版本号。
OpenSSL 1.0.2k-fips存在多个漏洞,以下是其中的一些:
- CVE-2016-2107: padding oracle in AES-NI CBC MAC check
- CVE-2016-6304: certificate message OOB reads
- CVE-2017-3731: RSA key generation cache timing vulnerability
- CVE-2017-3735: DDoS mitigation for ECSDA P-256
- CVE-2017-3736: EBCDIC overread
- CVE-2017-3737: BN_mod_exp may produce incorrect results on x86_64
- CVE-2017-3738: Malformed SHA512 ticket DoS
- CVE-2017-3739: BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption
- CVE-2017-3740: BN_mod_inverse with odd modulus produces incorrect results
- CVE-2017-3732: Potential timing side channel in DSA signature generation
请注意,这只是其中的一部分漏洞列表,不一定是全部的漏洞列表。如果您需要更详细的信息,请参考OpenSSL的安全公告。
下载
https://www.openssl.org/source/old/1.1.1/
yum安装
代码语言:javascript复制yum install -y openssl openssl-libs openssl-devel openssl-static
版本查询
查看现有的版本
代码语言:javascript复制openssl version
示例:
代码语言:javascript复制[root@test /]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@test /]#
[root@test /]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
[root@test /]# openssl version -a
OpenSSL 1.0.2k-fips 26 Jan 2017
built on: reproducible build, date unspecified
platform: linux-x86_64
options: bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/etc/pki/tls"
engines: dynamic
[root@test openssl-1.1.1q]#
编译升级
代码语言:javascript复制wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1q.tar.gz
tar -zxvf openssl-1.1.1q.tar.gz
cd openssl-1.1.1q
./config --prefix=/usr/local/openssl
make -j8
make install
ln -sf /usr/local/bin/openssl /usr/bin/openssl
ln -sf /usr/local/include/openssl /usr/include/openssl
ln -sf /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -sf /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
echo "/usr/local/lib/" >> /etc/ld.so.conf
ldconfig -v
openssl version
openssl version -a
可能存在的异常
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
这是由于openssl库的位置不正确造成的。
解决方法:
在root用户下执行:
代码语言:javascript复制ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1