我已经建立了一个可以工作的 FreeSwitch 盒子,并且可以使用 ws 连接在桌面上进行内部调用。稍后,我将盒子配置为使用 SSL 和 Letsencrypt 颁发的证书。SSL 证书由https://www.sslshopper.com/ssl-checker.htm验证,并且 Chrome 中的 https:// 连接显示良好的锁定标志。
然后我将代码从 ws 更改为 wss(见下文;公共 IP 地址被屏蔽。),但在 Chrome 中出现“net::ERR_CERT_COMMON_NAME_INVALID”错误。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sipjs-webphone</title>
<script src="./sip-0.15.1.min.js"></script>
<script>
var config = { uri: '1000@1xx.xxx.xxx.xxx',
transportOptions: { wsServers: ['wss://1xx.xxx.xxx.xxx:7443'] },
authorizationUser: '1000', password: '1234' };
var ua = new SIP.UA(config);
ua.on("connected", function() {
console.log("Connected!");
});
</script>
</head>
<body>
</body>
</html>
顺便说一句,我已经尝试更改为以下 2 个地方:
1)用来自 Letsencrypt 的有效证书/密钥附加或替换 /etc/freeswitch/tls/wss.pem,不高兴。
echo '' >> /usr/local/freeswitch/certs/wss.pem && cat cert.pem >> /usr/local/freeswitch/certs/wss.pem && cat privkey.pem >> /usr/local/freeswitch/certs/wss.pem && cat chain.pem >> /usr/local/freeswitch/certs/wss.pem
2)在 /usr/local/freeswitch/certs 中创建了 wss.pem(如果通过 'apt install freeswitch' 安装,而不是通过编译源代码,则该目录不存在),但仍然没有乐趣。