2011-01-27 16 views
8

Estoy usando Amazon AWS .NET SDK v1.2.1.Amazon S3 hace que SSL funcione con C# sdk

El siguiente código produce una excepción después de fallar una búsqueda de DNS para myBucket.more.https que claramente no es lo que debería estar buscando ...

AmazonS3Config S3Config = new AmazonS3Config() 
{ 
    ServiceURL = "https://s3.amazonaws.com", 
    CommunicationProtocol = Amazon.S3.Model.Protocol.HTTPS, 
}; 

using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey,secretKey, S3Config)) 
{ 
    PutObjectRequest request = new PutObjectRequest(); 

    using (MemoryStream ms = new MemoryStream(inputBytes)) 
    { 
     request.WithBucketName("myBucket.more") 
       .WithKey(output.Name) 
       .WithInputStream(ms); 

     using (S3Response response = client.PutObject(request)) 
     { 
         Log.Message("File Sent: " + output.Name); 
     } 
    } 
} 

Si quito el https:// desde la parte frontal de la lanza ServiceURL una excepción de la web con:

"The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."

Entonces, ¿cómo se supone que debo de hacer funcionar SSL?

La única forma que he conseguido hasta ahora es la siguiente, que no es seguro:

AmazonS3Config S3Config = new AmazonS3Config() 
{ 
    ServiceURL = "s3.amazonaws.com", 
    CommunicationProtocol = Amazon.S3.Model.Protocol.HTTP, 
}; 

ACTUALIZACIÓN

Si no paso a una costumbre S3Config CreateAmazonS3Client, se todavía está fallando con:

"The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."

"The remote certificate is invalid according to the validation procedure."

Respuesta

6

El ServiceUrl debe ser S3.amazonaws.com sin el https:// en frente. Esa es la configuración predeterminada como HTTPS para el protocolo Communication. Es por eso que obtienes el mismo error cuando no configuras manualmente.

actualización

cubos de la UE no pueden contener puntos (.) En el nombre si lo desea utilizar HTTPS.

+0

El cubo se creó hace horas y funciona perfectamente si desactivo SSL. Con la configuración predeterminada, aparece: "La conexión subyacente estaba cerrada: no se pudo establecer una relación de confianza para el canal seguro SSL/TLS. El certificado remoto no es válido según el procedimiento de validación". – Tim

+0

aunque supongo que aún podría deberse a DNS en el que tiene que coincidir con el certificado! – Tim

+0

@Jim - ¿ha intentado mirar las solicitudes que van al otro lado del cable con una herramienta como el violín? –