首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么openssl -trusted_first选项的行为与X509_V_FLAG_TRUSTED_FIRST环境变量不同?

为什么openssl -trusted_first选项的行为与X509_V_FLAG_TRUSTED_FIRST环境变量不同?
EN

Ask Ubuntu用户
提问于 2021-10-07 19:21:18
回答 2查看 432关注 0票数 0

我有一个perl脚本,它运行openssl在本地检查证书的有效性。我不想设置一个env var然后走开。对于我的openssl安装或配置来说,这更像是有趣的事情。

系统是什么,…版本

我正在本地验证来自Letsencrypt的证书。这是一个20.04焦距系统。Openssl是OpenSSL 1.1.1f 31 Mar 2020,所以我希望它能够愉快地验证证书,即使使用新的ISRG证书对其进行“交叉签名”。

但是,一旦旧的X3证书过期,这些错误就会开始…。

代码语言:javascript
复制
openssl verify -verbose -purpose sslserver -CAfile /path/redacted/chain.pem /path/redacted/cert.pem
C = US, O = Internet Security Research Group, CN = ISRG Root X1. 
error 2 at 2 depth lookup: unable to get issuer certificate. 
error /path/redacted/cert.pem: verification failed

一些挖掘让我对-trusted_firstopenssl verify的选择产生了疑问。这正是openssl在没有启用可信优先选项时会抱怨的地方。然而,试图显式启用该选项并不会影响:

代码语言:javascript
复制
openssl verify -trusted_first -verbose -purpose sslserver -CAfile /path/redacted/chain.pem /path/redacted/cert.pem
C = US, O = Internet Security Research Group, CN = ISRG Root X1
error 2 at 2 depth lookup: unable to get issuer certificate
error /path/redacted/cert.pem: verification failed

好吧,好吧。这个选项应该在默认情况下,因为OpenSS1.1.1上(这就是这个系统,见上文)。所以我明确的把它包括进去应该没什么区别。

但最终我尝试将它指定为env。等等,哇?为什么指定这个环境变量将openssl的行为修正为信任它在链中找到的第一个根证书:

代码语言:javascript
复制
set X509_V_FLAG_TRUSTED_FIRST openssl verify -trusted_first -verbose -purpose sslserver -CAfile /path/redacted/chain.pem /path/redacted/cert.pem

…以零的退出值运行。

放大

我不明白为什么openssl不只是工作(Tm)。这是一个完全更新的20.04。更新的ISRG根证书安装在/etc/ssl/certs/ISRG_Root_X1.pem中,update-ca-certificates很高兴:

代码语言:javascript
复制
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2021-10-11 20:04:48

我非常肯定,在运行命令之前,不是这样设置环境变量的。

https://www.gnu.org/software/bash/manual/html_节点/-Set-Builtin.html

举个例子,我想你会想要

代码语言:javascript
复制
X509_V_FLAG_TRUSTED_FIRST=1 openssl verify -trusted_first -verbose -purpose sslserver -CAfile /path/redacted/chain.pem /path/redacted/cert.pem

而不是。

票数 3
EN

Ask Ubuntu用户

发布于 2023-05-03 06:44:41

我在这里看到两个问题。

首先,正如RyanTM所提到的,您没有正确地设置环境变量。出口0来自set,而不是openssl命令。

第二,X509_V_FLAG_TRUSTED_FIRST不是环境变量。使用它作为环境变量在OpenSSL中不会起任何作用。

undefined注意:这是来自"man3“的,它用于C库函数。

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1368003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档