无法使用TLS连接到纵横路由器

时间:2015-11-26 12:04:17

标签: autobahn crossbar

我在这里运行了示例:https://github.com/crossbario/crossbarexamples/tree/master/wss/python,一切正常。

但是,以下情况对我不起作用:

config.json文件:

// stream "contains" bytes of your embedded template file.
using (var doc = SpreadsheetDocument.Open(stream, true))
{
...
}

web / index.html文件只是为了查看TLS是否有效:

{
  "controller": {},
  "workers": [
    {
      "type": "router",
      "realms": [
        {
          "name": "realm1",
          "roles": [
            {
              "name": "anonymous",
              "permissions": [
                {
                  "uri": "*",
                  "publish": true,
                  "subscribe": true,
                  "call": true,
                  "register": true
                }
              ]
            }
          ]
        }
      ],
      "transports": [
        {
          "type": "web",
          "endpoint": {
            "type": "tcp",
            "port": 9000,
            "tls": {
              "key": "server_key.pem",
              "certificate": "server_cert.pem",
              "dhparam": "dhparam.pem",
              "ciphers": "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!ADH:!AECDH:!MD5:!DSS"
            }
          },
          "paths": {
            "/": {
              "type": "static",
              "directory": "../web"
            },
            "ws": {
              "type": "websocket"
            }
          }
        }
      ]
    }
  ]
}

我生成了证书,如果我连接到<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Router</title> </head> <body> This is a router. </body> </html> 的网站,一切正常。页面正确加载。

但是,我在node.js中设置了另一个项目来尝试注册一些东西..(从页面加载计数示例中获取的代码)

https://127.0.0.1:9000中的代码:

server.js

现在,var connection = new autobahn.Connection({ url: 'wss://127.0.0.1:9000/ws', realm: 'realm1'} ); connection.onopen = function (session) { console.log("connected to WAMP router"); app.session = session; // REGISTER a procedure for remote calling // function get_visits () { return app.visits; } session.register('com.example.get_visits', get_visits).then( function (reg) { console.log("procedure get_visits() registered"); }, function (err) { console.log("failed to register procedure: " + err); } ); }; connection.onclose = function (reason, details) { console.log("WAMP connection closed", reason, details); app.session = null; } connection.open(); 是路由器的正确URL,但我总是收到以下内容:

wss://127.0.0.1:9000/ws

无法连接到服务器。

我相信一些基本概念正在逃避我,也许你可以引导我朝着正确的方向前进。

2 个答案:

答案 0 :(得分:0)

如果您使用的是自签名证书,则需要告知浏览器信任该证书,否则连接将在TLS层失败。

我最近在'crossbarexamples'存储库中添加了客户端证书支持和完整工作示例:https://github.com/crossbario/crossbarexamples/tree/master/authenticate/client_tls

在上面链接的示例中,您可以将中间CA证书导入浏览器(或自签名的根CA证书)。

答案 1 :(得分:0)

如果你添加

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"

在你的server.js代码中,然后node.js应该接受自签名证书。 (请参阅有关node.js问题here的讨论。