Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TLS连接redis返回握手失败 #322

Open
yuThomas opened this issue Jan 2, 2024 · 5 comments
Open

TLS连接redis返回握手失败 #322

yuThomas opened this issue Jan 2, 2024 · 5 comments

Comments

@yuThomas
Copy link

yuThomas commented Jan 2, 2024

使用这个库连接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

@zhengshuxin
Copy link
Member

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

@yuThomas
Copy link
Author

yuThomas commented Jan 2, 2024

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

好的,感谢

@yuThomas
Copy link
Author

yuThomas commented Jan 2, 2024

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

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

@zhengshuxin
Copy link
Member

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

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

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

@yuThomas
Copy link
Author

yuThomas commented Jan 3, 2024

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants