我想通过SSL将我的Predis客户端(PHP Redis)与node.js连接起来。它已经在TCP上工作了。所以我扩展了我的Predis配置:
$redis = new Predis\Client(array(
'timeout' => 5.0,
'throw_errors' => true,
'scheme' => 'ssl',
'host' => REDIS_HOST, //6379
'port' => REDIS_PORT,
'ssl' => ['local_cert' => APP.'libs/cert.pem'],
));
我不会更改Redis node.js配置:
var redis = require('redis');
var rClient = redis.createClient();
rClient.subscribe('channel');
当我尝试通过SSL连接时出现了这样的错误:
stream_socket_client(): SSL: crypto enabling timeout
stream_socket_client(): Failed to enable crypto
stream_socket_client(): unable to connect to ssl://111.111.111.111:6379 (Unknown error)
此连接适用于此类配置(无SSL):
$redis = new Predis\Client(array(
'timeout' => 5.0,
'throw_errors' => true,
'scheme' => 'tcp',
'host' => REDIS_HOST, //6379
'port' => REDIS_PORT,
));
我试过'scheme'=> sslv3和tls - 错误相同。 使用'scheme'=> sslv2 - 错误是:stream_socket_client():无法创建SSL句柄。
问题是:如何将node.js上的Predis和Redis配置为通过SSL连接?
PS。我使用这个版本的Predis库:https://github.com/RedisLabs/predis和branch:ssl。