我在一个独立的盒子上运行流行的开源中介p WebRTC服务器,没有防火墙,安装了新的SSL证书,机器上几乎没有其他任何运行(没有web服务器,没有数据库服务器,什么也没有)。当我的视频聊天应用程序试图通过此服务器将视频传输到使用Firefox的客户端时,mediasoup会发出SSL错误(下面第2行):
mediasoup:WARN:mediasoup-worker [id:gxzingwt#3] RTC::DtlsTransport::OnSslInfo() | received DTLS fatal alert: bad certificate +0ms
mediasoup:ERROR:mediasoup-worker [id:gxzingwt#3] RTC::DtlsTransport::CheckStatus() | OpenSSL error [desc:'SSL status: SSL_ERROR_SSL', error:'error:14102412:SSL routines:dtls1_read_bytes:sslv3 alert bad certificate'] +0ms
mediasoup:WARN:mediasoup-worker [id:gxzingwt#3] RTC::DtlsTransport::CheckStatus() | connection failed +1ms
mediasoup:WARN:mediasoup-worker [id:gxzingwt#3] RTC::DtlsTransport::Reset() | resetting DTLS transport +1ms
mediasoup:WARN:mediasoup-worker [id:gxzingwt#3] RTC::WebRtcTransport::OnDtlsFailed() | DTLS failed +0ms奇怪的是,这只发生在Firefox浏览器上。对于Safari、Chrome和Safari iOS (电话/iPad)来说,一点问题都没有。如果我有5个人在我的视频聊天室广播,我可以打开这些,看到/观看视频没有问题,从其他浏览器。但是Firefox (最新版本,无论是开发人员版本还是普通Firefox)都会导致mediasoup抛出SSL错误,并且流无法解析并向用户显示视频。
mediasoup运行在端口8443上,我也在端口443上尝试过它。我检查了调试日志,找不到任何其他问题--就是这个SSL问题。
我想我的加密证书可能是坏的,所以我已经撤销、删除并重新颁发了域的SSL证书。没有问题,也没有什么奇怪的地方。
我运行了openssl s_client -connect [my domain running mediasoup].com:8443 -showcerts,一切看起来都很好,证书很好--格式与我的web服务器机器上的有效证书匹配相同的输出,以及作为朋友的WebRTC服务器的相同输出。我还在机器上试用了openssl s_client -host [my domain].com -port 8443 -cert /etc/letsencrypt/live/[my domain].com/cert.pem -key /etc/letsencrypt/live/[my domain].com/privkey.pem,一切都很好。所以我不认为是证书的问题。
由于只有Firefox带来了这些问题,所以我认为Firefox可能以某种方式缓存了一个旧的/无效的证书,所以我删除并清理了Firefox的缓存,还查看了我的Mac的密钥链访问应用程序,以查看在运行mediasoup的域中是否有证书(没有)。
怎么回事?;-)为什么火狐--而且只有火狐!--会让媒体抛出这个错误,并阻止我的火狐用户使用视频聊天?再一次: Chrome,Safari,iPad/iPhone,一切都很完美。
(或者,我如何才能让这个媒体工作者进程更多地告诉我为什么它不喜欢SSL证书?)
(另外,为什么只有Firefox有问题呢?它是否是存储在Firefox中的证书,并发送到媒体服务器与其对话?我知道WebRTC协议很复杂,而且有很多的谈判,也许这就是它的一部分.就像它所指的证书可能与服务器域中的证书不同吗?)
发布于 2019-08-14 18:46:30
媒体论坛在这里:https://mediasoup.discourse.group
顺便说一句,正如Philipp所说,mediasoup“没有监听端口8443或443”。这是mediasoup-demo项目的WebSocket服务器。mediasoup本身根本不监听HTTP或WebSocket。
如果不向mediasoup.createWorker()提供TLS证书,则mediasoup将为DTLS创建自己的随机证书。在DTLS中,你可以看到这个错误。
顺便说一句,我已经在OSX中测试过最新的Firefox稳定版(68.0.2)和晚间版(70.0a1 (2019-08-14)),而且我在DTLS中没有发现任何SSL错误,所以老实说我不知道。
如果你能提供更多的信息(例如你使用的是哪个媒体版本),请在“媒体演示”类别中的媒体语篇组中打开一个问题。
https://stackoverflow.com/questions/57499089
复制相似问题