SSL UNABLE_TO_VERIFY_LEAF_SIGNATURE 的 Node.js 错误

新手上路,请多包涵

系统:Windows 7

节点版本:0.10.2

WS 模块:ws,最新版本

错误:

事件.js:72
        扔呃; // 未处理的“错误”事件
              ^
错误:UNABLE_TO_VERIFY_LEAF_SIGNATURE
    在 SecurePair。 (tls.js:1283:32)
    在 SecurePair.EventEmitter.emit(events.js:92:17)
    在 SecurePair.maybeInitFinished (tls.js:896:10)
    在 CleartextStream.read [as _read] (tls.js:430:15)
    在 CleartextStream.Readable.read (_stream_readable.js:294:10)
    在 EncryptedStream.write [as _write] (tls.js:344:25)
    在 doWrite (_stream_writable.js:211:10)
    在 writeOrBuffer (_stream_writable.js:201:5)
    在 EncryptedStream.Writable.write (_stream_writable.js:172:11)
    写入时 (_stream_readable.js:547:24)

服务器:

 (function(){

    "use strict";

    var fs = require('fs');

    // you'll probably load configuration from config
    var cfg = {
        ssl: true,
        port: 8080,
        ssl_key: 'crt/server1.key',
        ssl_cert: 'crt/server1.crt'
    };

    var httpServ = require('https')

    var WebSocketServer   = require('ws').Server;

    var app      = null;

    // dummy request processing
    var processRequest = function( req, res ) {

        res.writeHead(200);
        res.end("All glory to WebSockets!\n");
    };

    if ( cfg.ssl ) {

        app = httpServ.createServer({

            // providing server with  SSL key/cert
            key: fs.readFileSync( cfg.ssl_key ),
            cert: fs.readFileSync( cfg.ssl_cert ),
            //requestCert: true,
            //rejectUnauthorized: false

        }, processRequest ).listen( cfg.port );

    } else {

        app = httpServ.createServer( processRequest ).listen( cfg.port );
    }

    // passing or reference to web server so WS would knew port and SSL capabilities
    var wss = new WebSocketServer( { server: app } );

    wss.on( 'connection', function ( wsConnect ) {

        wsConnect.on( 'message', function ( message ) {

            console.log( message );

        });

    });

}());

客户:

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

证书确认。

帮助>请!

原文由 Yaroslav L. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 532
1 个回答

我正在使用一个名为“superagent”的包并得到同样的错误。在尝试了几种可能的修复方法之后,我遇到了 100% 对我有用的方法:

 process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

无需执行任何要求或其他任何操作:只需在网络调用之前将其添加到您的代码中即可。

原文由 dpjanes 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题