Kurento - WebSocket 连接失败
Kurento - WebSocket Connection failed
我正在尝试 运行 Kurento WebRTC 的 Java 脚本记录示例,如下所示:
http://doc-kurento.readthedocs.org/en/stable/tutorials/js/tutorial-recorder.html
我在 Ubuntu 机器上安装了 Kurento,运行 没问题。该服务也已启动。此外,我测试了基于 Java 的示例,并且 运行ning 没有任何问题。
js 录制示例失败,出现以下错误:
Mixed Content: The page at 'https://ABCDEF' was loaded over HTTPS, but
attempted to connect to the insecure WebSocket endpoint
'ws://XYZ:8433/'. This request has been blocked; this endpoint must be
available over WSS
我更改了 ws_uri 变量以指向安全的网络套接字:
ws_uri: 'wss://XYZ:8433',
但是,我现在收到以下错误:
WebSocket connection to 'wss://XYZ:8433/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
kurento 服务器使用 letsencrypt 通过 HTTPS 保护 运行。我使用以下说明来保护服务器:
https://doc-kurento.readthedocs.org/en/latest/mastering/securing-kurento-applications.html
但是,在上面的示例中,它要求连接以下 crt 文件:
cat signing-ca.crt subordinate-ca.crt server.crt > server.pem
虽然我在这里很困惑,因为我找不到上述文件。 Letsencrypt 为我生成以下 .pem 文件:
cert.pem, chain.pem, fullchain.pem, privkey.pem
是否应该在 kurento.json.conf 文件中使用上述文件之一?
您的 kurento.json.conf 文件可能没问题。
我 运行 不久前就进入了这个问题。问题是 java 出于安全目的阻止了 websocket 隧道。您需要在 registerWebSocketHandlers 方法中添加 setAllowedOrigins(*) 。 注意:这不安全,不应在生产环境中使用。
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(handler(), "/helloworld").setAllowedOrigins("*");
}
这是 Kurento 团队关于为什么这样编码的回应......
https://groups.google.com/d/msg/kurento/Q5ODV7hkuOc/RnsZKBaXDQAJ
您已经有一个 certificate chain 个文件,正如文档中提到的:
If this PEM certificate is a signed certificate (by a Certificate Authority such as Verisign), then you are done.
Kurento需要私钥和全链,但是这些文件在使用letsencrypt时是分开生成的。您可以将 fullchain.pem
和 privkey.pem
与 cat privkey.pem fullchain.pem > server.pem
连接起来
配置 Kurento 使用你的新文件 server.pem
作为它的 certificate
:
"secure": {
"port": 8433,
"certificate": "server.pem",
"password": ""
}
郑重声明,如果您要 sign your own certificate,您会使用 cat
来创建如下证书链:
root-ca ==> signing-ca ==> subordinate-ca ==> server
请确保已安装 Kurento 媒体服务器并且 运行。
我正在尝试 运行 Kurento WebRTC 的 Java 脚本记录示例,如下所示:
http://doc-kurento.readthedocs.org/en/stable/tutorials/js/tutorial-recorder.html
我在 Ubuntu 机器上安装了 Kurento,运行 没问题。该服务也已启动。此外,我测试了基于 Java 的示例,并且 运行ning 没有任何问题。
js 录制示例失败,出现以下错误:
Mixed Content: The page at 'https://ABCDEF' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://XYZ:8433/'. This request has been blocked; this endpoint must be available over WSS
我更改了 ws_uri 变量以指向安全的网络套接字:
ws_uri: 'wss://XYZ:8433',
但是,我现在收到以下错误:
WebSocket connection to 'wss://XYZ:8433/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
kurento 服务器使用 letsencrypt 通过 HTTPS 保护 运行。我使用以下说明来保护服务器:
https://doc-kurento.readthedocs.org/en/latest/mastering/securing-kurento-applications.html
但是,在上面的示例中,它要求连接以下 crt 文件:
cat signing-ca.crt subordinate-ca.crt server.crt > server.pem
虽然我在这里很困惑,因为我找不到上述文件。 Letsencrypt 为我生成以下 .pem 文件:
cert.pem, chain.pem, fullchain.pem, privkey.pem
是否应该在 kurento.json.conf 文件中使用上述文件之一?
您的 kurento.json.conf 文件可能没问题。
我 运行 不久前就进入了这个问题。问题是 java 出于安全目的阻止了 websocket 隧道。您需要在 registerWebSocketHandlers 方法中添加 setAllowedOrigins(*) 。 注意:这不安全,不应在生产环境中使用。
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(handler(), "/helloworld").setAllowedOrigins("*");
}
这是 Kurento 团队关于为什么这样编码的回应...... https://groups.google.com/d/msg/kurento/Q5ODV7hkuOc/RnsZKBaXDQAJ
您已经有一个 certificate chain 个文件,正如文档中提到的:
If this PEM certificate is a signed certificate (by a Certificate Authority such as Verisign), then you are done.
Kurento需要私钥和全链,但是这些文件在使用letsencrypt时是分开生成的。您可以将 fullchain.pem
和 privkey.pem
与 cat privkey.pem fullchain.pem > server.pem
配置 Kurento 使用你的新文件 server.pem
作为它的 certificate
:
"secure": {
"port": 8433,
"certificate": "server.pem",
"password": ""
}
郑重声明,如果您要 sign your own certificate,您会使用 cat
来创建如下证书链:
root-ca ==> signing-ca ==> subordinate-ca ==> server
请确保已安装 Kurento 媒体服务器并且 运行。