2011-09-05 180 views
4

我正在使用Unity3D,并尝试使用S3 .NET SDK。但不断收到以下错误:AWS 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拒绝信任任何受SSL保护的Web服务。 The Mono Security FAQ对如何处理这一问题的夫妇建议“

我曾尝试以下方法:

  1. Reference

    mcs am1.cs 
    
    mono am1.exe https://www.amazonaws.com 
    

    当我运行编译am1.exe,它给了我一个很多异常错误

  2. 使用mozroots.exe工具下载并安装所有Mozilla的根证书。

    C:\Program Files (x86)\Mono-2.6.7\lib\mono\1.0>mozroots --import --machine --sync 
    

    尽管输出表示证书已成功导入。但在Unity3D仍然提示

“从服务器接收证书无效”我一直在这个整天,不能把它解决了,希望有人能帮助我。

回答

1

0x80092012发生在证书无法验证撤销时。

自从2.8版本,单声道将默认为X509RevocationMode.NoCheck除非MONO_X509_REVOCATION_MODE环境变量设置(在这种情况下,它会检查证书存储区中的CRL)。

我不知道你的Unity3D版本和单声道本身有多近。但是,您应该能够使用ICertificatePolicyServicePointManager.ServerCertificateValidationCallback来解决此问题。如果它来自颁发给亚马逊的证书,则简单忽略0x80092012错误代码。

+0

什么是第一个版本,公司鲁德斯呢? – knocte

+0

@knocte我不记得了,但它在2011年9月之前;-)要找到它,你需要跟踪github上的变化(当引入'MONO_X509_REVOCATION_MODE'时)并检查包含该提交的发布分支。 – poupou

+0

谢谢,https://github.com/mono/mono/commit/231f4decce353eb21f4eaf0d6ed0ee7b1ef6268b所以2.8包括这个 – knocte

0
public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy 
{ 
    public TrustAllCertificatePolicy() {} 
    public bool CheckValidationResult(ServicePoint sp, 
     X509Certificate cert, 
     WebRequest req, 
     int problem) 
    { 
     return true; 
    } 
} 

所以建立HTTPS连接(通过WebRequest的,Web服务或其他)到远程服务器只需要调用之前:

System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); 

如果在单声道使用ASP的享受

0

,你需要下载并安装Mozilla的根证书与用户万维网数据

chown www-data /var/www/ 
sudo -u www-data mozroots --import --sync