如何找出openssl可信证书的路径?

chr*_*s01 16 openssl certificate

我怎样才能找到我安装的openssl在哪里寻找已安装的证书(可信)?它有时是/ etc/ssl/cert但我在这里有一个新的系统,它不能使用这个路径.

谢谢!问候,克里斯

tnb*_*nbt 27

在每个平台上查找证书的默认路径可能不同.您可以使用以下命令查找系统配置:

$ openssl version -d

OPENSSLDIR: "/etc/pki/tls"
Run Code Online (Sandbox Code Playgroud)


caf*_*caf 12

这个针对OpenSSL编译的C片段会告诉你:

#include <stdlib.h>
#include <stdio.h>
#include <openssl/x509.h>

int main()
{
    const char *dir;

    dir = getenv(X509_get_default_cert_dir_env());

    if (!dir)
        dir = X509_get_default_cert_dir();

    puts(dir);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • gcc -o cafscode cafscode.c $(pkg-config --libs --cflags openssl) (2认同)

Jim*_*unt 6

您要查找的路径是“OpenSSL 文件目录”。正如@tnbt 回答的那样openssl version -d(或-a)为您提供了该目录的路径。OpenSSL的看起来这里进行了命名的文件cert.pem和子目录certs/。它在那里找到的证书被视为受信任的openssl s_clientopenssl verify(来源:文章OpenSSL 识别哪些证书颁发机构?)。

% openssl version -d
OPENSSLDIR: "/opt/local/etc/openssl"
% ls -l /opt/local/etc/openssl/cert*
lrwxr-xr-x  1 root  admin  40 29 Nov 02:05 /opt/local/etc/openssl/cert.pem -> /opt/local/share/curl/curl-ca-bundle.crt
% head -10 /opt/local/etc/openssl/cert.pem
##
## Bundle of CA Root Certificates
##
## Certificate data from Mozilla as of: Fri Nov 24 08:00:26 2017 GMT
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
## file (certdata.txt).  This file can be found in the mozilla source tree:
## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
##
...[rest of file omitted]...
Run Code Online (Sandbox Code Playgroud)

事实证明,在我的系统上安装 OpenSSL 的安装程序也安装cert.pem为来自该工具的证书颁发机构证书包的符号链接cUrl。那些反过来来自 Mozilla。

您可能没有在此文件或目录中安装任何东西,或者您可能有一组不同的证书。这将影响 OpenSSL 验证哪些服务器证书。

s_client支持这样的 OpenSSL 命令,我认为从 1.1 版开始,选项-no-CAfile-no-CApath. 这些使您可以在一个命令的持续时间内分别忽略此文件和目录中的证书。(我无法重现这一点,因为我仍在使用 1.0.2 版,并且缺少这些选项。)