SSL_CTX_load_verify_locations 的问题
Troubles with SSL_CTX_load_verify_locations
我有 openssl 服务器,我不需要允许所有客户端连接。我为这个 int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile,const char *CApath);
找到了这个函数。它适用于一个 CA 文件和一个证书,但我需要再添加一个,所以我尝试将证书添加到此文件,如下所示:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
但是程序只读了第一个而没有读第二个。接下来,我尝试使用 CApath,我将我的 .crt 文件重命名为 hash
.0,现在程序不读取它们。我做错了什么?
.crt 格式的证书。
工作正常:SSL_CTX_load_verify_locations(ctx, "keys/c1.crt", NULL);
无效:SSL_CTX_load_verify_locations(ctx, NULL, "keys/hashes");
两行代码returns1.
对于 CApath
参数,我认为您需要使用 OpenSSL 的 rehash
(或 c_rehash
)实用程序。假设您的证书在 keys/
目录中,如下所示:
keys/c1.crt
keys/c2.crt
然后你使用openssl rehash
生成OpenSSL期望的links/names:
$ openssl rehash keys
准备 keys/
目录用于 SSL_CTX_load_verify_locations()
:
SSL_CTX_load_verify_locations(NULL, "keys");
希望对您有所帮助!
我有 openssl 服务器,我不需要允许所有客户端连接。我为这个 int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile,const char *CApath);
找到了这个函数。它适用于一个 CA 文件和一个证书,但我需要再添加一个,所以我尝试将证书添加到此文件,如下所示:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
但是程序只读了第一个而没有读第二个。接下来,我尝试使用 CApath,我将我的 .crt 文件重命名为 hash
.0,现在程序不读取它们。我做错了什么?
.crt 格式的证书。
工作正常:SSL_CTX_load_verify_locations(ctx, "keys/c1.crt", NULL);
无效:SSL_CTX_load_verify_locations(ctx, NULL, "keys/hashes");
两行代码returns1.
对于 CApath
参数,我认为您需要使用 OpenSSL 的 rehash
(或 c_rehash
)实用程序。假设您的证书在 keys/
目录中,如下所示:
keys/c1.crt
keys/c2.crt
然后你使用openssl rehash
生成OpenSSL期望的links/names:
$ openssl rehash keys
准备 keys/
目录用于 SSL_CTX_load_verify_locations()
:
SSL_CTX_load_verify_locations(NULL, "keys");
希望对您有所帮助!