Проблемы с сертификатом при подключении к Amazon S3

Мой код C# пытается извлечь файлы из корзины Amazon S3. Этот код отлично работает как в моей разработке, так и на сервере UAT. Однако когда я запускаю это на своем производственном сервере, я получаю ошибку сертификата.

Одно различие между UAT и производственным серверами заключается в том, что на UAT нет ограничений на исходящий доступ в Интернет. На производственных серверах бесплатный исходящий доступ в Интернет запрещен. мы открываем только избранные URL-адреса в соответствии с требованиями.

Мы уже открыли доступ к s3.amazonaws.com. Мы также убедились, что этот доступ работает нормально, используя инструмент WinSCP. Однако когда мой код пытается сделать то же самое, я получаю следующую ошибку:

WinSCP.SessionRemoteException: Ошибка проверки сертификата сервера: Эмитент не является доверенным.

Исходный код прилагается ниже:

      s3HostName = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["s3HostName"]);
s3UserName = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["s3UserName"]);
s3Password = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["s3Password"]);

LocalFilePath = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["LocalFilePath"]);
s3Folder = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["s3Folder"]);
LocalFileFolder = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["LocalFileFolder"]);

LocalFolder = LocalFilePath + yesterday + "\\";
SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.S3,
    HostName = s3HostName,
    UserName = s3UserName,
    Password = s3Password,
};
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = WinSCP.TransferMode.Automatic;
transferOptions.FilePermissions = null;
transferOptions.PreserveTimestamp = false;

using (Session session = new Session())
{
    log.Debug("Open session for s3");
    session.Open(sessionOptions);
    if (!Directory.Exists(LocalFolder))
    {
        Directory.CreateDirectory(LocalFolder);
    }

    //to download files
    session.GetFiles(s3Folder + "*" + yesterday + ".csv", LocalFolder);
    session.Close();
    log.Debug("Closed session for s3");
    return "Success";
}

1 ответ

Решение

Решил проблему с помощью самого старого трюка в книге. Переустановил WinSCP. Теперь все работает нормально.

Другие вопросы по тегам