2023年12月20日发(作者:)
unity ssl ca certificate error
最近在使用Unity进行网络请求时,遇到了 SSL CA证书错误的问题。经过一番查找和尝试,终于解决了这个问题。在此分享一下具体的解决方案,希望对遇到相同问题的小伙伴有所帮助。
问题描述
在 Unity 中使用 HttpWebRequest 进行网络请求时,返回了一个 SSL CA证书错误,具体错误信息如下:
eption: Error getting response stream
(Write: The authentication or decryption has failed.):
SendFailure
原因分析
这个错误通常是由于 SSL CA证书验证失败引起的。在进行
HTTPS 请求时,服务器会返回一个证书,客户端需要验证这个证书是否有效和可信。如果证书验证失败,就会出现以上错误。
解决方案
有两种比较常见的解决方案:
方案一:忽略证书验证
这个方案的核心思想是跳过证书验证,直接接受服务器返回的证书。在 Unity 中,可以通过以下代码来实现:
CertificateValidationCallback
+= (sender, certificate, chain, errors) => true;
这样就可以在发起网络请求时跳过证书验证了。但是需要注意的 - 1 -
是,这种做法会降低系统的安全性,不建议在正式环境中使用。
方案二:添加证书到信任列表
这个方案的核心思想是将服务器返回的证书添加到 Unity 的信任列表中,使其被认为是可信的证书。具体的实现步骤如下:
1. 从服务器下载证书文件,通常是一个 .cer 格式的文件。
2. 将证书文件添加到 Unity 的 Resources 文件夹中。
3. 在代码中读取证书文件,并将其添加到信任列表中:
var certFile =
var cert = new X509Certificate2();
CertificateValidationCallback
+= (sender, certificate, chain, errors) => {
if
(CertData().SequenceEqual(CertData())) {
return true;
}
return errors == ;
};
这样就可以将证书添加到信任列表中了。需要注意的是,如果服务器的证书发生了变化,这个做法就不再有效,需要重新下载新的证书文件。
总结
- 2 -
以上就是解决 Unity 中 SSL CA证书错误的两种方案。如果你遇到了相同的问题,可以根据自己的实际情况来选择适合自己的解决方案。希望对大家有所帮助!
- 3 -


发布评论