Predis クライアント (PHP Redis) を SSL 経由で 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 ハンドルの作成に失敗しました。
問題は、SSL 経由で接続するように node.js で Predis と Redis を構成する方法です。
PS。このバージョンの Predis ライブラリを使用します: https://github.com/RedisLabs/predisおよびブランチ: ssl。