Используется php 7.1
В доках есть код:
$context = array(
'ssl' => array(
'local_cert' => '/your/path/of/server.pem',
'local_pk' => '/your/path/of/server.key',
'verify_peer' => false,
)
);
// Create a Websocket server with ssl context.
$ws_worker = new Worker("websocket://0.0.0.0:2346", $context);
На моем домене стоит сертификат Lets Encrypt и при генерации были созданы:
- *server.ca
- *server.crt - сертификат в формате PEM
- *server.crta - цепочка сертификатов в формате PEM
- *server.key - private key
я прописал свои пути до сертификатов:
'local_cert' => '/my_path/server.crt',
'local_pk' => '/my_path/server.key',
cервер запустился нормально, но при обращении к нему получаю ошибку:
file.html:2 WebSocket connection to 'wss://ip.ip.ip.ip:2020/' failed: Error in connection establishment: net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH
В консоли сервера, в debug, выходит ошибка:
SSL handshake error: stream_socket_enable_crypto(): SSL_R_NO_SHARED_CIPHER: no suitable shared cipher could be used. This could be because the server is missing an SSL certifi
cate (local_cert context option)
По ошибке можно подумать, что файл ssl не найден, однако пути правильные.
Попробовал сделать по примеру
Почему не работает Workerman для wss соединения?'local_cert' => __DIR__.'/server.pem',
'local_pk' => __DIR__.'/server.key',
но ошибка сохраняется...
Подскажите:
1. В local_cert указывается сертификат в формате pem (в моем случае .ctr) или цепочка сертификатов (в моем случае .crta) ?
2. Как можно решить данную проблему ?