微信小游戏 wss Android 6 及一下 访问 trustanchor for certification path not found

本文分享了微信小程序中HTTPS和WSS配置的实战经验,包括如何解决证书问题,以及配置Nginx和调整WebSocket证书的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先吐槽一下,

泥煤微信小程序,坑爹啊,这个坑真大 ,

说明:

再微信小游戏发布的时候需要配置 https 和 wss,

由于不允许配置端口,并且需要用认证了的证书,所以就只有用域名转发的方式来指向服务器的端口上。

配置好了之后,高高兴兴的上线了。

然后发现一群玩家不能登录游戏,

查日志,翻百度,一天,

https://myssl.com/ssl.html?domain=ttjhdc.gmmaker.cn&port=443&c=0

发现 我们生成的证书 缺少中间证书,

然后去阿里云上申请免费证书,原本以为需要几天,结果几分钟就可以了,

下载 nginx 相关证书,根据说明配置到我 转发的域名 service 上,

配置教程 https://help.aliyun.com/video_detail/54216.html?spm=5176.2020520163.cas.49.4a9e2b7a7IxZNE

然后 测试,无法登陆,查日志

trustanchor for certification path not found

又是翻百度,翻论坛,

然后在 https://developers.weixin.qq.com/community/develop/doc/a898c660d136a7e72cc50b9c6382b37f

提到了,服务器有多个证书 设置默认返回的证书的是websocket的那个

想了半天,没想通怎么添加,

放弃的时候灵光一闪,找到了配置

这二个地方的证书要保持一致。

然后就能访问了。

感谢   太阳 大神的回答.

继续 摸坑,踩坑,脱坑,。

当在Android应用中尝试通过WebSocket连接到服务器时,遇到`java.security.cert.CertPathValidatorException: Trust anchor for certification path not found`这个错误,通常是由于SSL/TLS证书的问题。问题出在客户端无法找到用于验证服务器证书链的信任根证书。信任根证书是可信的第三方证书颁发机构(CA)签发的一组证书,用于确定其他证书的有效性。 解决这个问题通常需要以下步骤: 1. **检查服务器证书**:确保服务器提供的证书是有效的,并且是由知名的CA签发的。如果证书是从自签名的或不受信任的CA颁发的,Android可能无法识别。 2. **添加信任根证书**:如果你有服务器的证书文件,可以将其导入到Android应用的安全证书存储(keyStore),然后在运行时设置为信任。这通常涉及到创建一个KeyStore、将证书安装进去,然后在Websocket初始化时提供该KeyStore。 3. **使用BouncyCastle库**:有些旧版设备或者某些特定环境下,系统内置的Java SSL支持可能不包含所有必要的根证书。在这种情况下,你可以考虑使用BouncyCastle这样的第三方库,它包含了更多的根证书信息。 4. **代码示例**(假设你已经在应用中设置了TrustManager): ```java try { KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); InputStream in = context.getAssets().open("server.crt"); // 替换为你服务器证书的路径 trustStore.load(in, "password".toCharArray()); // 密码 // 创建并配置TLSContext SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, new TrustManager[]{new BouncyCastleX509TrustManager(trustStore)}, null); SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); URL url = new URL("wss://your-server.com:8080/websocket"); WebSocket socket = new WebSocket(url.toString(), sslSocketFactory); } catch (Exception e) { Log.e("WebSocket", "Failed to establish connection: ", e); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值