Аутентификация WebSocket с самоподписанным SSL-сертификатом - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь заставить свой клиент WebSocket на основе javascript работать с моим сервером C ++. Проблема в том, что я не знаю, как аутентифицировать клиента. Я использую библиотеку Boost.Beast для серверной части, просто взял пример сервера asyn c для тестирования. В этом примере сервера есть самозаверяющий сертификат сервера, но я не знаю, как его использовать для клиентов.

Я пытался подключиться с помощью плагина Simple WebSocket Client Firefox, но я этого не сделал. Я не знаю, как передать сертификат с моим запросом туда, поэтому, конечно, это тоже не сработает.

Код для сервера точно такой же, как в примере, который вы найдете здесь: Asyn c Пример кода сервера

Самозаверяющий сертификат можно найти в заголовке server_certificate.hpp: server_certificate.hpp

Мой код на стороне клиента выглядит так (пропуск сертификата отсутствует):

<script>
        const ws = new WebSocket("wss://127.0.0.1:5555");
            
        ws.addEventListener("open", () => {
            alert("connected");
        });
        
        ws.addEventListener("message", e => {
            alert(e);
            var messages = document.getElementById("messages");
            messages.value = messages.value + e.data + "\n";
        });
        
        function send()
        {
            var username = document.getElementById("username");
            var message = document.getElementById("message");
            ws.send(username.value + ":" + message.value);
        }

        ws.onerror = function(error) {
            alert(`[error] ${error.message}`);
        };
    </script>

При этом я получаю ответ «sslv3 alert bad certificate» после выполнения запроса на подключение. Я не получаю сообщений об ошибках от функции ws.onerror.

Пожалуйста, укажите мне правильное направление!

...