我试图加密运行在php 5.6.40上的应用程序到gearman服务器(1.1.12版)的连接。我已经启动了启用ssl的gearman服务器,并将ca文件、证书和密钥作为参数传递。
gearmand -d --ssl --ssl-ca-file=ca.crt --ssl-certificate=gearman.crt --ssl-key=gearman.key现在我陷入困境的地方是让我的php客户端使用ssl。我使用的是GearmanClient类,它附带了php的gearman扩展,我想不出实现这个目标的方法。
$gearmanClient = new GearmanClient();
$gearmanClient->addServer('server ip', 4730);
$result = $gearmanClient->doHighBackground('job-type', 'workload');上面的代码可以工作,但是作业类型和工作负载是未经加密发送到gearman服务器的。如果php的gearman扩展是不可能的,有人知道我们是否可以使用套接字函数来实现这一点吗?我经历了很多与此相关的线索,但却找不到合适的答案。如果这一问题已经得到答复,请表示歉意。
发布于 2019-11-27 18:50:26
gearmand中的SSL支持工作得很好。我已经在生产环境中使用了3年了。另一个答案中提到的问题仍然没有解决,因为这个问题实际上是关于对文档进行改进,并且这个愿望列表项目没有得到解决。
在PHP扩展中获得SSL支持是可能的,但它需要自己修补和编译代码。当前版本的PHP扩展可以在https://github.com/wcgallego/pecl-gearman上找到,但它适用于PHP7.x。
据我所知,针对较早版本的PHP (< 7.x)的Gearman扩展已不再维护,但您可以在https://github.com/hjr3/pecl-gearman下载最新版本,并在https://bugs.php.net/bug.php?id=67623上应用该修补程序。它起作用了。在使用PHP7.x之前,我的工作场所在生产中使用了大约一年。
如果您使用的是PHP,我最近打开了一个PR,用于在7+上添加SSL支持。您还应该阅读https://github.com/wcgallego/pecl-gearman/issues/43上的问题线程,以获得一些注意事项。
在这两种情况下,您还需要一个来自gearmand1.1.19或更高版本的libgearman.so,它是用--enable-ssl编译的,并且支持setSSL() API。
发布于 2019-11-27 14:22:05
发布于 2019-11-26 12:46:23
据称,SSL是,而不是。这是很久以前作为bug发布的。和这个问题仍然被认为是公开的。官方的延期似乎也已不复存在:上一次发布是在6年多以前。
如果我站在你的立场上,我会转到更稳定的地方,有更好的社区支持。
https://stackoverflow.com/questions/59046197
复制相似问题