SSL_CTX_load_verify_locations令人烦恼

时间:2015-02-06 12:59:32

标签: c++ openssl key ssl-certificate server

我有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.

1 个答案:

答案 0 :(得分:0)

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

keys/c1.crt
keys/c2.crt

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

$ openssl rehash keys

准备用于keys/的{​​{1}}目录:

SSL_CTX_load_verify_locations()

希望这有帮助!