В настоящее время я получаю сообщение об ошибке:
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
при попытке подключения к защищенному серверу React. Я использую общий хостинг-сервер Dreamhost, мой подписанный сертификат предоставлен LetsEncrypt. Я могу получить доступ к необработанному тексту сертификата, секретного ключа RSA и промежуточного сертификата для своего сайта через веб-портал Dreamhost. Я скопировал их в файлы в том же каталоге, что и скрипт chat-server.php, поэтому мое файловое дерево выглядит так:
mydomain.com:|chat.php|бен:||чат-server.php||public.pem // содержит текст сертификата, скопированный с Dreamhost||key.pem // содержит текст закрытого ключа, скопированный из Dreamhost...
с файлом chat.php для создания экземпляра веб-сокета для клиента.
Вот chat-server.php:
<?php
require dirname(__DIR__) . '/vendor/autoload.php';
$app = new \Ratchet\Http\HttpServer(
new \Ratchet\WebSocket\WsServer(
new \MyApp\Chat()
)
);
$loop = \React\EventLoop\Factory::create();
$certs = openssl_get_cert_locations();
$secure_websockets = new \React\Socket\Server('0.0.0.0:8080', $loop);
$secure_websockets = new \React\Socket\SecureServer($secure_websockets, $loop, [
'local_cert' => "public.pem",
'local_pk' => "key.pem"
]);
$secure_websockets_server = new \Ratchet\Server\IoServer($app, $secure_websockets, $loop);
$secure_websockets_server->run();
Но яполучение версии SSL или несоответствие шифров. Что должен содержать мой файл сертификата? Нужно ли указывать local_cert в другом месте на моем сервере? Мне нужен мой личный ключ? Я попытался включить сертификат и промежуточный сертификат в файл public.pem, разные расширения файлов, разные опции контекста SSL, и ничего не помогло.