Создание TLS-соединения с помощью кнопки в браузере с помощью node-forge?

#javascript #browser #tls1.2 #node-forge

#javascript #браузер #tls1.2 #node-forge

Вопрос:

Можно ли создать TLS-соединение из браузера с помощью node-forge? Я в основном хочу протестировать / проверить рукопожатие TLS и просто вывести информацию об этом в браузере. Node-forge выглядит как реализация tls на javascript, но не уверен, что можно было бы делать то, что я хочу, в браузере, поскольку в основном кажется, что он работает с node.

 var socket = new net.Socket();
 
var client = forge.tls.createConnection({
  server: false,
  verify: function(connection, verified, depth, certs) {
    // skip verification for testing
    console.log('[tls] server certificate verified');
    return true;
  },
  connected: function(connection) {
    console.log('[tls] connected');
    // prepare some data to send (note that the string is interpreted as
    // 'binary' encoded, which works for HTTP which only uses ASCII, use
    // forge.util.encodeUtf8(str) otherwise
    client.prepare('GET / HTTP/1.0rnrn');
  },
  tlsDataReady: function(connection) {
    // encrypted data is ready to be sent to the server
    var data = connection.tlsData.getBytes();
    socket.write(data, 'binary'); // encoding should be 'binary'
  },
  dataReady: function(connection) {
    // clear data from the server is ready
    var data = connection.data.getBytes();
    console.log('[tls] data received from the server: '   data);
  },
  closed: function() {
    console.log('[tls] disconnected');
  },
  error: function(connection, error) {
    console.log('[tls] error', error);
  }
});
 
socket.on('connect', function() {
  console.log('[socket] connected');
  client.handshake();
});
socket.on('data', function(data) {
  client.process(data.toString('binary')); // encoding should be 'binary'
});
socket.on('end', function() {
  console.log('[socket] disconnected');
});
 
// connect to google.com
socket.connect(443, 'google.com');
 
// or connect to gmail's imap server (but don't send the HTTP header above)
//socket.connect(993, 'imap.gmail.com');
 

В этом примере фрагментов используется net.sockets, но будет ли это работать из браузера?

Комментарии:

1. Вам удалось это сделать? или придумали какой-нибудь обходной путь?

2. @Mr.Goferito Создание кузницы для веб-браузера Вы находите это полезным?