一、场景:
接口发布服务器环境为CentOS Linux release 7.5.1804 (Core),OpenSSL 版本OpenSSL 1.0.2k-fips 26 Jan 2017,前端是uni-app开发的小程序,编译发布后在运行过程中,频繁出现“request:fail 发生了 SSL 错误无法建立与该服务器的安全连接”以及“request:fail 网络连接已终端”的提示,导致程序运行过程中频繁出行网络异常,服务异常等提示。
二、分析过程:
1、域名及备案;
2、SSL证书;
3、网络。
三、最终定位:
网络问题。
四、造成原因:OPENSSL拒绝服务漏洞安全预警。
近日我司安全团队关注到OpenSSL官方发布安全通告公布了一个拒绝服务漏洞(CVE-2020-1971),官方评级高危。利用漏洞可触发空指针引用,造成程序崩溃最终导致拒绝服务。我司安全团队提醒受影响的客户及时安排自检并做好安全加固。参考链接: https://www.openssl.org/news/secadv/20201208.txt
【威胁级别】:【严重】(说明:威胁级别共四级:一般、重要、严重、紧急)
【影响范围】:影响版本OpenSSL 1.1.1和OpenSSL 1.0.2(已不再受公开支持)
【安全版本】OpenSSL 1.1.1i
【安全建议】OpenSSL官方已经发布版本更新,请受漏洞影响的客户尽快升级到安全版本。https://www.openssl.org/source/
五、解决办法:
升级openssl至openssl1.1.1i。
升级步骤:
方式一:
备份
/usr/bin/openssl /usr/bin/openssl.bak
//解压编译安装
tar -zxvf openssl-1.1.1i.tar.gz
cd openssl-1.1.1i/
./config --prefix=/usr/local/openssl
make && make install
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
openssl version
方式二:
当服务器为离线环境,且没有GCC的时候,编译安装会有问题,需要先安装gcc,这在离线环境是个很麻烦的事情哦,直接使用编译好的包进行安装可以有效规避
使用openssl1.1.1i编译好的包,解压并进行简单配置便可完成openssl升级。升级步骤如下
1、直接将编译好的包openssl1.1.1i-compile.tar上传包至/opt
2、解压
tar -zxvf openssl1.1.1i-compile.tar.gz
3、将解压出来的openssl移动到/usr/local下
mv openssl /usr/local/
4、备份原来的,设置软链(参考我的另一篇博文:centos7升级openssl至openssl1.1.1i)
备份原来的,设置软链
mv /usr/bin/openssl /usr/bin/openssl.bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
查看版本
openssl version
OpenSSL 1.1.1i 8 Dec 2020
最终通过升级openssl的方式,解决了问题。在此做个记录,希望能帮到遇到跟我们一样问题的小伙伴,以上为个人观点,欢迎各位大佬批评指正,不喜勿喷哦~