我在这里运行了示例: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
无法连接到服务器。
我相信一些基本概念正在逃避我,也许你可以引导我朝着正确的方向前进。
答案 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的讨论。