インストールされているopensslがインストールされている証明書(信頼できる)を探している場所を確認するにはどうすればよいですか?/etc/ssl/certの場合もありますが、ここに新しいシステムがあり、このパスでは機能しません。
どうも!よろしく、クリス
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;
}
証明書が検索されるデフォルトのパスは、プラットフォームごとに異なる場合があります。次のコマンドを使用して、システム構成を検索できます。
$ openssl version -d
OPENSSLDIR: "/etc/pki/tls"
インストールされているopensslがインストールされている証明書(信頼できる)を探している場所を確認するにはどうすればよいですか?
できません。 OpenSSLはデフォルトでは何も信頼せず、証明書を探しに行きません。あなたはそれに何を信頼するかを指示しなければなりません。 FAQトピックでそれをカバーしています: なぜ<SSL program>
は証明書検証エラーで失敗するのですか? :
この問題は通常、「ローカル発行者証明書を取得できません」や「自己署名証明書」などのログメッセージで示されます。証明書が検証されると、そのルートCAはOpenSSLによって「信頼」される必要があります。これは通常、CA証明書をディレクトリまたはファイルに配置し、関連するプログラムがそれを読み取るように構成する必要があることを意味します。 OpenSSLプログラムの「verify」は同様の動作をし、同様のエラーメッセージを発行します。詳細については、verify(1)プログラムのマニュアルページを確認してください。
Cafの答えは正しいですが、OpenSSLはそれを使用せず、そこには何もありません...
$ grep -R X509_get_default_cert_dir *
...
crypto/x509/x509_def.c:const char *X509_get_default_cert_dir(void)
...
上記では、apps/
ディレクトリ内の何かにヒットしないnotことに注意してください。 apps/
は、openssl req
、openssl rsa
、openssl dsa
、openssl x509
、openssl sign
、openssl verify
などのすべてのOpenSSLサンプルとユーティリティがある場所です。
次に:
$ cat crypto/x509/x509_def.c
...
const char *X509_get_default_cert_dir(void)
{ return(X509_CERT_DIR); }
...
$ grep -R X509_CERT_DIR *
crypto/cryptlib.h:#define X509_CERT_DIR OPENSSLDIR "/certs"
そして最後に:
$ ls /usr/local/ssl/certs/
$
私が言ったように、それは使われず、そこには何もありません。
探しているパスは「OpenSSLファイルのディレクトリ」です。 @ tnbt回答済み のように、openssl version -d
(または-a
)はこのディレクトリへのパスを示します。 OpenSSLは、ここでcert.pem
という名前のファイルとサブディレクトリcerts/
を探します。そこにあることが判明した証明書は、openssl s_client
およびopenssl 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]...
私のシステムにOpenSSLをインストールしたインストーラーは、ツールからの認証局証明書のバンドルへのシンボリックリンクとしてcert.pem
もインストールしたことがわかりました cUrl
。それらはMozillaから来ました。
このファイルまたはディレクトリに何もインストールされていないか、別の証明書のセットがある可能性があります。これは、OpenSSLが検証するサーバー証明書に影響します。
s_client
のようなOpenSSLコマンドは、バージョン1.1以降、オプション-no-CAfile
および-no-CApath
をサポートしていると思います。これらを使用すると、1つのコマンドの間、このファイルとディレクトリの証明書をそれぞれ無視できます。 (バージョン1.0.2をまだ使用しているため、これを再現できません。また、これらのオプションがありません。)