websocket使用ssl链接不上服务器(已解决)

我没转成base64就可以了。转了反而不行。一开始不行是因为路径问题,借@LucasWang的代码搞定了,谢谢

我也遇到了这个问题,第一个问题也解决了,然后也出现了第二个问题:报证书验证失败的错误"certificate verify failed"。
按照解决方案的第一个第二条做了,第三条之后就不太懂了,后面的步骤能否详细介绍一下吗,或者在哪里可以找到对应的说明文章。

new WebSocket的时候报错 failed: Error during WebSocket handshake: Sent non-empty ‘Sec-WebSocket-Protocol’ header but no response was received

求大佬分享

mark websocket ssl连接不上服务器

mark

求分享。。 真得搞死人了

一堆证书 那个才是啊!? 叫什么名字

搞了2个多小时总算搞定了:
下面是整理步骤:
注意:(证书在百度上有在线转换,可以把你当前的证书转换成pem格式的,然后走下面的教程)

【然后我们开始第一大步骤 导出一个base64的cer证书】
根据网站xxx.pem获取安卓websocket所需的根证书的方法

  1. 第一步,打开window操作系统 (mac下面不知道怎么导出证书)
  2. 第二部, 将网站证书xxxx.pem更名为xxx.cer
  3. 第三部, 双击xxx.cer
  • 选择[证书路径]选项卡
  • 鼠标点击下方证书树的根节点
  • 鼠标点击下方查看证书按钮
  • 点击[证书详情]选项卡
  • 点击[导出证书] (此处win10显示的不是导出证书字样,一共2个按钮 试一试就知道了 具体我忘了,点击后是导出向导)
  • 选择 base64模式导出的文件就是 安卓Websocket第三个参数所需的文件

【第二大步骤】
var pemUrl = cc.url.raw(‘resources/ssl/android.cer’)
if(cc.loader.md5Pipe) {
pemUrl = cc.loader.md5Pipe.transformURL(pemUrl)
console.log(pemUrl)
window.ws = new WebSocket(url, null, pemUrl);
} else {
cc.log(‘cc.loader.md5Pipe:’, cc.loader.md5Pipe)
}

【异常1】:
cc.loader.md5Pipe
这个可能是空的需要判断一下 导出android版的时候勾选MD5Cache后,这个值就不是空的了

【异常2】:
new WebSocket(url, null, pemUrl); 本身第三个参数可能会报错,不用管尤其是 typescript下

【注意】
一定要编译成android版后在运行测试

其它平台需要单独判断下,要不然会报错

1赞

双击根本打不开cer,你们选择什么打开方式的。。。。

为什么我改为.cer后打开是无效的证书文件呢,你怎么双击xx.cer

  1. 第一步,打开window操作系统 (mac下面不知道怎么导出证书)
  2. 第二部, 将网站证书xxxx.pem更名为xxx.cer
  3. 第三部, 双击xxx.cer
  • 选择[证书路径]选项卡
  • 鼠标点击下方证书树的根节点
  • 鼠标点击下方查看证书按钮
  • 点击[证书详情]选项卡
  • 点击[导出证书] (此处win10显示的不是导出证书字样,一共2个按钮 试一试就知道了 具体我忘了,点击后是导出向导)
  • 选择 base64模式导出的文件就是 安卓Websocket第三个参数所需的文件

这些步骤做不来,为啥我证书双击xxx.cer没用

大佬咋搞这个证书啊,现在我也是SL routines:tls_process_server_certificate:certificate verify failed

验证失败了,我怎么双击你cer没反应。

这个方案好,分享下憋,不用搞啥证书。。。

公司项目代码不能外传,只能提供思路你自己实现。
Java-WebSocket在github上:Java-WebSocket
java的封装和jni调用你只能自己实现了

感谢大神的方法,终于搞好了:slightly_smiling:

感谢兄弟 用自己的证书不行 用官方的就好了

12456

如果证书过期更换证书,服务器和客户端需要同时换,只能停服更新吗?有没有更换好的思路

你怎么解决的