我没转成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所需的根证书的方法
- 第一步,打开window操作系统 (mac下面不知道怎么导出证书)
- 第二部, 将网站证书xxxx.pem更名为xxx.cer
- 第三部, 双击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版后在运行测试
其它平台需要单独判断下,要不然会报错
双击根本打不开cer,你们选择什么打开方式的。。。。
为什么我改为.cer后打开是无效的证书文件呢,你怎么双击xx.cer
- 第一步,打开window操作系统 (mac下面不知道怎么导出证书)
- 第二部, 将网站证书xxxx.pem更名为xxx.cer
- 第三部, 双击xxx.cer
- 选择[证书路径]选项卡
- 鼠标点击下方证书树的根节点
- 鼠标点击下方查看证书按钮
- 点击[证书详情]选项卡
- 点击[导出证书] (此处win10显示的不是导出证书字样,一共2个按钮 试一试就知道了 具体我忘了,点击后是导出向导)
- 选择 base64模式导出的文件就是 安卓Websocket第三个参数所需的文件
这些步骤做不来,为啥我证书双击xxx.cer没用
大佬咋搞这个证书啊,现在我也是SL routines:tls_process_server_certificate:certificate verify failed
验证失败了,我怎么双击你cer没反应。
这个方案好,分享下憋,不用搞啥证书。。。
感谢大神的方法,终于搞好了
感谢兄弟 用自己的证书不行 用官方的就好了
12456
如果证书过期更换证书,服务器和客户端需要同时换,只能停服更新吗?有没有更换好的思路
你怎么解决的