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 = ('ca_cert');

var cert = new X509Certificate2();

CertificateValidationCallback

+= (sender, certificate, chain, errors) => {

if

(CertData().SequenceEqual(CertData())) {

return true;

}

return errors == ;

};

这样就可以将证书添加到信任列表中了。需要注意的是,如果服务器的证书发生了变化,这个做法就不再有效,需要重新下载新的证书文件。

总结

- 2 -

以上就是解决 Unity 中 SSL CA证书错误的两种方案。如果你遇到了相同的问题,可以根据自己的实际情况来选择适合自己的解决方案。希望对大家有所帮助!

- 3 -