Задать вопрос
@dixoNich
frontend developer

Ошибка при подключение WS клиента к серверу по HTTPS?

В общем, нода выдаёт такую ошибку при подключении клиента к серверу:



Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE

at SecurePair. (tls.js:1283:32)

at SecurePair.EventEmitter.emit (events.js:92:17)

at SecurePair.maybeInitFinished (tls.js:896:10)

at CleartextStream.read [as _read] (tls.js:430:15)

at CleartextStream.Readable.read (_stream_readable.js:294:10)

at EncryptedStream.write [as _write] (tls.js:344:25)

at doWrite (_stream_writable.js:211:10)

at writeOrBuffer (_stream_writable.js:201:5)

at EncryptedStream.Writable.write (_stream_writable.js:172:11)

at write (_stream_readable.js:547:24)





os: win7

node: 0.10.2



на 8-ой ноде всё работает без проблем, но на 8ую перейти нет возможности. сертификаты free, выданные comodo.

Вот листинги, если надо (точнее, это просто примеры из документации, я лишь указал путь к корневым сертификатам)



Сервер:

(function(){<br>
<br>
    "use strict";<br>
<br>
    var fs = require('fs');<br>
<br>
    // you'll probably load configuration from config<br>
    var cfg = {<br>
        ssl: true,<br>
        port: 8080,<br>
        ssl_key: 'crt/server1.key',<br>
        ssl_cert: 'crt/server1.crt'<br>
    };<br>
<br>
    var httpServ = require('https') <br>
    var cas = [fs.readFileSync('crt/COMODOHigh-AssuranceSecureServerCA.crt'), <br>
    fs.readFileSync('crt/AddTrustExternalCARoot.crt')]<br>
    httpServ.globalAgent.options.ca = cas;<br>
    console.log(httpServ.globalAgent.options)<br>
    var WebSocketServer   = require('ws').Server;<br>
<br>
    var app      = null;<br>
<br>
    // dummy request processing<br>
    var processRequest = function( req, res ) {<br>
<br>
        res.writeHead(200);<br>
        res.end("All glory to WebSockets!\n");<br>
    };<br>
<br>
    if ( cfg.ssl ) {<br>
<br>
        app = httpServ.createServer({<br>
<br>
            // providing server with  SSL key/cert<br>
            key: fs.readFileSync( cfg.ssl_key ),<br>
            cert: fs.readFileSync( cfg.ssl_cert ),<br>
            requestCert: true,<br>
            rejectUnauthorized: false<br>
<br>
        }, processRequest ).listen( cfg.port );<br>
<br>
    } else {<br>
<br>
        app = httpServ.createServer( processRequest ).listen( cfg.port );<br>
    }<br>
<br>
    // passing or reference to web server so WS would knew port and SSL capabilities<br>
    var wss = new WebSocketServer( { server: app } );<br>
<br>
    wss.on( 'connection', function ( wsConnect ) {<br>
<br>
        wsConnect.on( 'message', function ( message ) {<br>
<br>
            console.log( message );<br>
<br>
        });<br>
<br>
    });<br>
<br>
}());<br>




Клиент



var WebSocket = require('ws');<br>
var ws = new WebSocket('wss://localhost:8080');<br>
ws.on('open', function() {<br>
    ws.send('something');<br>
});<br>


Прошу Вашей помощи!
  • Вопрос задан
  • 3554 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы