AWS S3 .NET SDK - PullRequest
       13

AWS S3 .NET SDK

4 голосов
/ 05 сентября 2011

Я использую 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 веб-службам. FAQ по Mono Security содержит несколько советов, как решить проблему. "

Я попробовал следующие методы:

  1. Ссылка

    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 он по-прежнему выдает «Недействительный сертификат, полученный с сервера»

IЯ работал над этим весь день и не могу решить его, надеюсь, кто-нибудь может мне помочь.

Ответы [ 3 ]

1 голос
/ 07 сентября 2011

0x80092012 происходит, когда сертификат не может быть проверен на отзыв.

Начиная с версии 2.8 Mono по умолчанию будет X509RevocationMode.NoCheck , если MONO_X509_REVOCATION_MODE* Переменная окружения установлена ​​(в этом случае она будет проверять наличие CRL в хранилищах сертификатов).

Я не знаю, насколько свежа ваша версия Unity3D по сравнению с самой Mono.Однако вы должны иметь возможность использовать ICertificatePolicy или ServicePointManager.ServerCertificateValidationCallback , чтобы обойти эту проблему.Просто игнорируйте код ошибки 0x80092012 , если он исходит из сертификата, выданного Amazon.

0 голосов
/ 30 марта 2014

Если вы используете ASP для in mono, вам нужно скачать и установить корневые сертификаты Mozilla с пользователем www-data

chown www-data /var/www/
sudo -u www-data mozroots --import --sync
0 голосов
/ 16 мая 2013
public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
{
     public TrustAllCertificatePolicy() {}
     public bool CheckValidationResult(ServicePoint sp, 
         X509Certificate cert,
         WebRequest req, 
         int problem)
     {
        return true;
     }
}

Поэтому, прежде чем устанавливать HTTPS-соединение (через WebRequest, WebServices или другое) с удаленным сервером, просто наберите:

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

Наслаждайтесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...