OpenSSL 默认不选取证书文件夹中的 CA

OpenSSL 默认不选取证书文件夹中的 CA

在 Ubuntu 12.04 LTS 上,如果未明确设置 CApath,则会收到证书验证错误

尝试了几种解决方案。但都不起作用。它导致在我的系统上安装新软件包时出现很多问题(至少在两个系统上尝试过)

成功的命令:

openssl s_client -connect secure.ogone.com:443 -showcerts -CApath /etc/ssl/certs/ 

Success with Verify return code: 0 (ok) 

命令失败

openssl s_client -connect secure.ogone.com:443 -showcerts 

Failed with Verify return code: 20 (unable to get local issuer certificate)

我尝试了以下基于 wiki 回复的解决方案,但它也不起作用

openssl x509 -noout -hash -in /etc/ssl/certs/GeoTrust_Global_CA.pem 2c543cd1    
openssl x509 -noout -subject_hash_old -in /etc/ssl/certs/GeoTrust_Global_CA.pem 7999be0d    
openssl x509 -noout -subject_hash -in /etc/ssl/certs/GeoTrust_Global_CA.pem 2c543cd1

我可以看到哈希值的差异

-subject_hash_old我尝试添加一个脚本来使用和创建符号链接-subject_hash

但问题继续发生并且我得到了错误代码Verify return code: 20 (unable to get local issuer certificate)

#!/bin/sh
Create following script to create symbolic links in /etc/ssl/certs
Link with subject_hash_old and subject_hash is successfully created


for FILE in /etc/ssl/certs/*.pem
do
   hasholdsub=`openssl x509 -noout -subject_hash_old -in $FILE`
   hashsub=`openssl x509 -noout -subject_hash -in $FILE`

   echo $hasholdsub $hashsub

   ln -s $FILE  $hasholdsub.0
   ln -s $FILE  $hashsub.0
   cat  $FILE >> ca-certificats-gen.crt
done

但这个问题仍然存在

请帮助解决该问题。

答案1

请尝试使用-CAfile而不是-CApath并指向单个串联 CA 证书文件。例如:

openssl s_client -connect secure.ogone.com:443 -showcerts \
                 -CAfile /etc/ssl/certs/ca-certificates.crt

这对我有用,显示verify return:1完整的证书链。

背景信息:这/etc/ssl/certs/ca-certificates.crt是由update-ca-certificates命令管理的,简单地连接所有系统范围内安装的证书,包括那些手动安装的证书/usr/local/share/ca-certificates/

相关内容