我有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.
答案 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()
希望这有帮助!