在 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/
。