SSL_CTX_load_verify_locations出现问题

Troubles with SSL_CTX_load_verify_locations

本文关键字:问题 locations verify CTX load SSL      更新时间:2023-10-16

我有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");

两行代码都返回1。

对于CApath参数,我认为您需要使用OpenSSL的rehash(或c_rehash)实用程序。假设您的证书在keys/目录中,如下所示:
keys/c1.crt
keys/c2.crt

然后使用openssl rehash生成OpenSSL期望的链接/名称:

$ openssl rehash keys

准备在SSL_CTX_load_verify_locations():中使用的keys/目录

SSL_CTX_load_verify_locations(NULL, "keys");

希望这能有所帮助!