swoole对SSL的支持不足?swoole好坑,使用需谨慎

首先肯定,swoole是支持TCP的SSL方式连接通信的。但是双向认证似乎不行,设置了双向认证,结果客户端不使用证书也一样能连接。
回归正题。最近项目需求,要与esp8226芯片的wifi模块通信,模块只有静态链接库,因此这部分底层代码无法修改。经验证,该代码应该是能连接,并正常通信的。结果使用swoole写的服务端,使用tcp方式和esp8226连接通信就没问题,但使用SSL无论怎样都连接失败。
查找原因,swoole使用的是SSL_do_handshake与客户端建立连接。如果同样使用C语言的代码,用SSL_accept建立连接,写一个简单的TCP带SSL的服务器,和esp8226连接通信就没问题。提问也没人能回答,资料也找不到。如果看swoole的源代码自己弄,估计短期内不太可能。最后不得不放弃swoole改用golang语言写服务端,非常顺利就解决,而且完全符合预期。
哎,被swoole坑了好久,还是大厂靠谱,swoole还是慎重使用。千万别听他的可用于物联网,后面还不知道有多少坑要踩,亲自体验的结果。

阅读 3.7k
2 个回答

Swoole 默认是不开启证书验证的,你可以设置ssl_verify_peer验证对端证书,可以设置ssl_allow_self_signed允许自签名证书,ssl_verify_depth设置深度。

SSL连接失败,请贴出相关的错误信息和错误码。

用的就是源代码里的例子examples/ssl/server.php
有'ssl_verify_peer' => true
swoole版本4.2.13
错误提示太少:
就是 swoole-src/src/protocol/ssl.c 文件的 699行产生的 bad SSL client[%s:%d] 后面是ip和端口号。看提示没什么意义,就算开启debug好像也没有太多的有意义的提示.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进