uwebsocket wss server как запустить?
Подскажите, использую библиотеку uwebsocket для С++, сперва писал просто без SSL, коннектился через консоль в Chrome ws = new WebSocket("ws://localhost:1457");
все работает шикарно.
Настала пора прикрутить шифрование, открыл файл с примером https://github.com/uNetworking/uWebSockets/blob/master/examples/EchoServer.cpp
долго мучался а где мне взять privatekey.pem и certificate.pem
я установил openssl (https://slproweb.com/products/Win32OpenSSL.html) что надо писать, что бы получить нужные мне сертификаты? Должно ли быть у меня 2 комплекта сертификатов, один для localhost, пока отлаживаю сервер, и 1 на внешний IP, когда сервер будет общедоступен через интернет? как их сгенерировать?
я запускал после установки openssl консоль (из папки С:\Program Files\OpenSSL-Win64) и с найденной на англоязычном ресурсе командой req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt, конвертировал их .pem и указал пути до него.
Но в итоге, сервер как работал на ws://localhost:1457 так и работает. на wss://localhost:1457 не коннектится, Chrome пишет VM102:1 WebSocket connection to 'wss://localhost:1457/' failed: (anonymous) @ VM102:1
что я делаю не так? Подскажите либо с кодом для uwebsocket либо с сертификатами SSL? Спасибо.
Ниже код сервера, лишнее, касаемо обработки команд я подтёр.
uWS::SSLApp(
{
.key_file_name = "C:\\cpp\\privateKey.pem",
.cert_file_name = "C:\\cpp\\certificate.pem",
.passphrase = "1234"
}
).ws<UserConnection>("/*", {
.compression = uWS::DISABLED,
.maxPayloadLength = 16 * 1024 * 1024,
.idleTimeout = 600,
.maxBackpressure = 16 * 1024 * 1024,
.closeOnBackpressureLimit = false,
.resetIdleTimeoutOnSend = true,
.sendPingsAutomatically = false,
.upgrade = nullptr,
.open = [](auto* ws) {
UserConnection* data = (UserConnection*)ws->getUserData();
},
.message = [](auto* ws, std::string_view message, uWS::OpCode opCode) {
},
.drain = [](auto* ws) {
},
.ping= [](auto* ws, std::string_view pingmes) {
},
.pong = [](auto* ws, std::string_view pongmes) {
},
.close = [](auto* ws, int code, std::string_view message)
{
UserConnection* data = (UserConnection*)ws->getUserData();
std::cout << "User #" << data->user_id << " has disconnected!\n";
},
}).listen(port, [&port](auto* token) {
if (token) {
// std::cout << "\n\n\n\n\n\n\n\n\n\n";
std::cout << "Server started successfully on port " << port << std::endl;
}
else std::cout << "Server failed to start" << std::endl;
}).run();
}