Ошибка подключения к Kurento - WebSocket
Я пытаюсь запустить пример записи Javascript для Kurento WebRTC, как показано в:
http://doc-kurento.readthedocs.org/en/stable/tutorials/js/tutorial-recorder.html
У меня есть настройка Kurento на машине Ubuntu, и она работает нормально. Служба также началась. Кроме того, я тестировал Java-пример и работал без каких-либо проблем.
Ошибка записи js со следующей ошибкой:
Смешанный контент: страница с надписью https://ABCDEF 'была загружена через HTTPS, но попытался подключиться к небезопасной конечной точке WebSocket 'WS://XYZ: 8433/. Этот запрос заблокирован; эта конечная точка должна быть доступный через WSS
Я изменил переменную ws_uri, чтобы указать на защищенный веб-сокет:
ws_uri: 'wss://XYZ:8433',
Однако теперь я получаю следующую ошибку:
WebSocket connection to 'wss://XYZ:8433/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
Сервер kurento защищен для работы через HTTPS с использованием letencrypt. Я использовал следующие инструкции для защиты сервера:
https://doc-kurento.readthedocs.org/en/latest/mastering/securing-kurento-applications.html
Однако в приведенном выше примере он запрашивает объединение следующих файлов crt:
cat signing-ca.crt subordinate-ca.crt server.crt > server.pem
Я здесь смущен, так как я не мог найти вышеуказанные файлы. Letsencrypt генерирует для меня следующие файлы .pem:
cert.pem, chain.pem, fullchain.pem, privkey.pem
Должен ли один из указанных файлов использоваться в файле kurento.json.conf?
Ответы
Ответ 1
Вы должны использовать один из указанных вами файлов .pem
-
Вам не нужно конкатенировать любые файлы .crt
, так как вы используете letsencrypt
в качестве центра сертификации.
У вас уже есть файлы цепочки сертификатов, и в документации упоминается:
Если этот сертификат PEM является подписанным сертификатом (с помощью центра сертификации, такого как Verisign), значит, вы сделали.
(Отказ от ответственности: я никогда не использовал "letencrypt" сервисы, поэтому я говорю вообще)
Файлы, созданные с помощью letencrypt, не являются показательными (как сообщается в этой проблемах на GitHub), но кажется, что fullchain.pem
файл, который вам нужен.
Настроить Kurento на использование fullchain.pem
в качестве certificate
:
"secure": {
"port": 8433,
"certificate": "fullchain.pem",
"password": ""
}
Для записи, если бы вы подписали свой собственный сертификат, вы бы использовали cat
, чтобы создать цепочку сертификатов следующим образом:
root-ca == > подпись-ca == > subordinate-ca == > сервер
Ответ 2
Ваш файл kurento.json.conf, вероятно, прекрасен.
Я столкнулся с этим вопросом некоторое время назад. Проблема в том, что java блокирует туннелирование websocket для целей безопасности. Вы должны добавить setAllowedOrigins (*) в метод registerWebSocketHandlers. Примечание: это не безопасно и не должно использоваться в рабочей среде.
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(handler(), "/helloworld").setAllowedOrigins("*");
}
Здесь ответ команды Kurento о том, почему она закодирована таким образом...
https://groups.google.com/d/msg/kurento/Q5ODV7hkuOc/RnsZKBaXDQAJ
Ответ 3
Убедитесь, что установлен и запущен сервер печати Kurento.
https://github.com/Kurento/kurento-media-server