acl-dev/acl

TLS连接redis返回握手失败

Opened this issue · 5 comments

使用这个库连接redis是必须要使用cert/key文件么

  1. 调用代码如下:
    `acl::acl_cpp_init();
    acl::log::stdout_open(true);

    acl::redis_client c("redis:6379");
    c.set_password("");

    acl::polarssl_conf::set_libpath("/usr/loca/lib/libpolarssl.so");
    auto conf = new acl::mbedtls_conf;
    c.set_ssl_conf(conf);

    const char *key = "OBD:ALKDJFLAKDJADSK";

    acl::redis conn;
    conn.set_client(&c);

    auto ret = conn.set(key, "1", 10, SETFLAG_NX | SETFLAG_EX);`

  2. 调用返回错误如下:
    polarssl_conf.cpp(208), polarssl_dll_load: /usr/local/lib/libpolarssl.so loaded! polarssl_io.cpp(447), handshake: ssl_handshake failed: -0x7200

是的,而且需要有ca证书,可以参考:#155 中讨论的。

是的,而且需要有ca证书,可以参考:#155 中讨论的。

好的,感谢

是的,而且需要有ca证书,可以参考:#155 中讨论的。

再次请问,是否有提供单向认证功能,即客户端不携带证书。
我尝试使用单向认证(也就是上面的代码),也查看了相关的issue,没有找到类似的信息。但是从源码中samples的redis_ssl示例中,发现并没有对客户端认证文件的强校验,我推测应该是支持此种功能,或是我的理解有问题。谢谢

是的,而且需要有ca证书,可以参考:#155 中讨论的。

再次请问,是否有提供单向认证功能,即客户端不携带证书。 我尝试使用单向认证(也就是上面的代码),也查看了相关的issue,没有找到类似的信息。但是从源码中samples的redis_ssl示例中,发现并没有对客户端认证文件的强校验,我推测应该是支持此种功能,或是我的理解有问题。谢谢

这个双向验证似乎是redis-server要求的。

是的,而且需要有ca证书,可以参考:#155 中讨论的。

再次请问,是否有提供单向认证功能,即客户端不携带证书。 我尝试使用单向认证(也就是上面的代码),也查看了相关的issue,没有找到类似的信息。但是从源码中samples的redis_ssl示例中,发现并没有对客户端认证文件的强校验,我推测应该是支持此种功能,或是我的理解有问题。谢谢

这个双向验证似乎是redis-server要求的。

  1. redis-server我这边配置的是单向认证,同时我尝试以其他语言如GoLang进行单向认证连接测试,可以通过。
  2. 在使用acl::redis_client::set_ssl_conf()这个接口时,我使用的是polarssl,acl::polarssl_conf构造函数中第二个参数为不校验,理解为应该是客户端不校验服务端证书,但是从实际输出看,应该还是做的双向校验