我正在尝试让 Matrix Synapse (matrixdotorg/synapse) 与 Coturn (coturn/coturn) (作为 Docker 堆栈) 一起工作。Matrix 完全可以使用 TLS 证书。此外,coturn 服务器在禁用 TLS 的情况下也可以正常工作。但是当我启用 TLS 时,它就完全失败了。
在 Matrix 的 homeserver.yaml 中,有以下 TURN 设置:
turn_uris: [ "turns:turn.example.com?transport=udp", "turns:turn.example.com?transport=tcp", "turn:turn.example.com?transport=udp", "turn:turn.example.com?transport=tcp" ]
turn_shared_secret: "secretstuff"
turn_user_lifetime: 1h
turn_allow_guests: true
这是完整的 turnserver.conf 文件:
listening-port=3478
# tls-listening-port=5349
listening-ip=172.16.1.2
relay-ip=172.16.1.2
external-ip=1.2.3.4
min-port=49152
max-port=65535
verbose
use-auth-secret
static-auth-secret=secretstuff
realm=turn.example.com
user-quota=12
total-quota=1200
no-tcp-relay
stale-nonce=600
cert=/etc/certs/fullchain.pem
pkey=/etc/certs/privkey.pem
no-software-attribute
no-multicast-peers
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.168.0.0-192.168.255.255
allowed-peer-ip=172.16.1.2
pidfile="/var/tmp/turnserver.pid"
no-cli
no-tlsv1
no-tlsv1_1
如果我禁用 TLS 侦听器(注释掉的行),那么一切都会正常工作。但是,一旦我启用 TLS 侦听器,就无法建立连接(呼叫按钮会创建一个呼叫,另一端会响铃,但当我接听时,它只会显示“正在连接”并保持该状态。在日志中我没有得到任何有用的提示。TURN 服务器上的 TLS 证书适用于“turn.example.com” - 服务器的域名。
我已经尝试了在线找到的所有方法 - 在 GitHub 和教程中。但没有任何效果。
终端设备采用搭载 Element App 的 Android 智能手机。
答案1
如果您正在使用 let's encrypt 证书,那么这是 android 客户端的一个错误,而该错误又是由 chromium 中的一个错误引起的:https://github.com/vector-im/element-android/issues/1533
本质上,chromium 接受的证书不包含 let's encrypt 证书,并且默认情况下 chromium 使用一组捆绑的接受证书而不是主机证书。
在解决这个问题之前,我们能做的事情不多,一个建议的解决方法是切换到 ZeroSSL 来提供您的证书。