Ws works fine for them to communicate. when I add TLS the socket is opened fine (shown on nmap) however if i try to connect with JS i get on the rust "{ code: -2146893017, kind: Uncategorized, message: "An unknown error occurred while processing the certificate." }".
use native_tls::{Identity, TlsAcceptor, TlsStream};
use std::fs::{File};
use std::io::{Read, Write};
use std::net::{TcpListener, TcpStream};
use std::sync::{Arc};
use std::thread;
fn main() {
let mut cert_file = File::open("cert.pem").unwrap();
let mut certs = vec![];
cert_file.read_to_end(&mut certs).unwrap();
let mut key_file = File::open("key.pem").unwrap();
let mut key = vec![];
key_file.read_to_end(&mut key).unwrap();
let pkcs8 = Identity::from_pkcs8(&certs, &key).unwrap();
let acceptor = TlsAcceptor::new(pkcs8).unwrap();
let acceptor = Arc::new(acceptor);
let listener = TcpListener::bind("127.0.0.1:8080").unwrap();
for stream in listener.incoming() {
match stream {
Ok(stream) => {
let acceptor = acceptor.clone();
thread::spawn(move || {
let stream = acceptor.accept(stream).unwrap();
handle_client(stream);
fn handle_client(mut stream: TlsStream<TcpStream>) {
let mut buf = [0; 1024];
let read = stream.read(&mut buf).unwrap();
let received = std::str::from_utf8(&buf[0..read]).unwrap();
stream
.write_all(format!("received '{}'", received).as_bytes())
.unwrap();
}
});
}
Err(_e) => { /* connection failed */ }
}
}
}
var socket = new WebSocket('wss://127.0.0.1:8080');
socket.onopen = function() {
// Connection opened
console.log("Connection opened");
socket.send("Hello, world!");
};