centso7 openssl 报错Verify return code: 20 (unable to get local issuer certificate)

  • Post author:
  • Post category:其他


问题重现:

由于centos7 默认的openssl的版本为1.1.0k,本人编译媒体服务时,需要openssl版本1.1.1以上,所有删除的之前的低版本openssl,手动编译了一个1.1.1k的版本,媒体服务正常运行,并且CA验证正常。

结果昨天晚上服务器断电重启后,当我在获取电信MQ数据时,openssl一直报错,

Unhandled exception. System.Security.Authentication.AuthenticationException:The remote certificate was rejected by the provided RemoteCertificateValidat

使用openssl的命令测试连接状态:

openssl s_client -connect msgpush.ctwing.cn:16651

得到以下结果:

提示,无法加载本地证书。使用了各种方案,编译各种版本的openssl,还是不行。

百般无奈下,只能分析线上环境的openssl(线上为云服务器,openssl为1.02K)与本地服务器的openssl的区别,又经历了痛苦的几个小时。终于在查看openssl 版本的命令中,看出了端倪,这个命令很重要:



openssl version -d

线上打印的结果:

本地服务器的结果:

进入线上环境openssl 的目录:执行命令

ll

显示结果:

关键点就这个目录,看我标红的部分,这里的软链接就是证书的位置

我们再来看,本地服务器

可以看到,并没有看到证书的软链接,

所以一切的原因就是这里,没有告诉系统openssl使用的证书位置。所以我们创建一个软链接即可。

ln -s /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem cert.pem

执行结果如下:

当我们再次使用openssl的测试命令时:成功了,

场景2:

通过上面流程执行后发现依然验证失败。

使用命令

openssl verify cert.pem

提示无法加载文件,找不到指定的文件。

首先我们看我们openssl的安装路径是不是在/usr/local/lib64 目录下,经过查看无此文件夹,文件被安装到了/usr/local/lib 目录下,这里我们首先需要将ld.so.cnf中的路径修改为/usr/local/lib

再次使用命令验证依旧失败,无法加载证书

经过比对,使用tls-ca-bundle.pem 文件为空,这里可能生成证书的时候配置有问题

我们将其他服务器受信任的证书拷贝一份过来,验证成功。

其他命令



openssl version -a

基于net 5.0在centos 7上提示ssl握手失败的解决方案

# Add this in the head of the file
openssl_conf = openssl_init

#
# skip
#

# And the following in the end of the file
[openssl_init]
ssl_conf = ssl_config

[ssl_config]
system_default = tls_defaults

[tls_defaults]
CipherString = @SECLEVEL=2:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:-aDSS:-3DES:!DES:!RC4:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
Ciphersuites = TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256
MinProtocol = TLSv1.2

问题链接:


.net 核心 – 互操作加密 OpenSslCryptographic异常:错误:14094410:SSL 例程:ssl3_read_bytes:sslv3 警报握手失败 – 堆栈溢出 (stackoverflow.com)

解决无法加载本地证书的参考文章:


How to Fix Unable to get Local Issuer Certificate – howtouselinux



版权声明:本文为yunxiaobaobei原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。