我正在使用 Unity3D,并尝试使用 S3 .NET SDK。但一直低于错误:
TlsException: Invalid certificate received from server. Error code: 0xffffffff80092012
Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates)
Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 ()
我的 javascript 代码:
function Start()
{
client = Amazon.AWSClientFactory.CreateAmazonS3Client(Conf.AWSAccessKey, Conf.AWSSecretKey);
var response : ListBucketsResponse = client.ListBuckets();
}
找了一整天,大概找到原因了:
事实证明,Mono 安装时没有根证书,因此默认情况下,Mono 拒绝信任任何受 SSL 保护的 Web 服务。 The Mono Security FAQ对如何处理这个问题有一些建议。”
我试过以下方法:
-
mcs am1.cs mono am1.exe https://www.amazonaws.com
当我运行编译后的 am1.exe 时,它给了我很多异常错误
使用 mozroots.exe 工具下载并安装所有 Mozilla 的根证书。
C:\Program Files (x86)\Mono-2.6.7\lib\mono\1.0>mozroots --import --machine --sync
尽管输出显示证书已成功导入。但是在Unity3D中还是提示“Invalid certificate received from server”
我整天都在研究这个问题,但无法解决,希望有人能帮助我。
请您参考如下方法:
0x80092012 发生在无法验证吊销证书时。
从 2.8 版开始,Mono 将默认为 X509RevocationMode.NoCheck,除非设置了 MONO_X509_REVOCATION_MODE 环境变量(在这种情况下,它将检查证书存储区内的 CRL)。
我不知道你的 Unity3D wrt Mono 版本有多新。但是你应该能够使用 ICertificatePolicy或 ServicePointManager.ServerCertificateValidationCallback解决此问题。如果 0x80092012 错误代码来自颁发给 Amazon 的证书,请忽略它。