【原创】解决WSS报错:WebSocket connection failed: Error in connection establishment: net::ERR_CERT_AUTHORITY_INVALID

blogdaren 2018-08-17 抢沙发 3268人次

问题背景

至少玩过 Workerman + WSS协议的小伙伴普遍都遇到过这样的报错经历,但是搜来搜去,网上千篇一律的抄,云里雾里也解决不了问题;

为了方便测试,一般采用了自签名证书,调试过程如下:

服务端启用WSS服务  -->  Chrome浏览器调试  -->  F12  --> Console --> 输入调试代码  --> Console报告标题所述错误

调试代码

ws = new WebSocket("wss://www.wss.com");
ws.onopen = function() {
    alert("连接成功");
    ws.send('blogdaren__phpmooc');
    alert("给服务端发送一个字符串:blogdaren__phpmooc");
};
ws.onmessage = function(e) {
    alert("收到服务端的消息:" + e.data);
};

问题原因

由于证书是自签名的,所以证书的CA肯定在操作系统的根存储区域是没有的,自然操作系统就不会认可你,自然浏览器也不认你,也就是自签证书不受信任。

解决方案

1. 打开 Chrome,新开一个Tab页面。

2. 访问自己的测试域名:https://www.wss.com。

3. 你会发现浏览器告警:"您的连接不是私密连接......."。

4. 不要慌,往下面看,点"高级"。

5. 继续点击 "继续前往 www.wss.com(不安全)"。

6. 页面会提示"400 Bad Request......",不用管,这是因为用HTTP协议访问WSS服务所致,不用管,到这里就可以解决提示错误啦。

注意事项

1. Firefox 和 Chrome 浏览器对SSL证书拒绝的错误提示是不一样的:

  (1) Chrome报错:WebSocket connection failed: Error in connection establishment: net::ERR_CERT_AUTHORITY_INVALID

  (2) Firefox报错:Firefox 无法建立到 wss://www.wss.com/ 服务器的连接。

2. Firefox 和 Chrome 浏览器对SSL证书拒绝的错误提示虽然不一样,但是解决步骤完全一样样。

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】解决WSS报错:WebSocket connection failed: Error in connection establishment: net::ERR_CERT_AUTHORITY_INVALID

发表评论:

您的昵称:
电子邮件:
个人主页: