TlsExceptionを解消
HttpWebRequestを使用している箇所でこんなエラーが出る時があったので、その解消法をメモ。
Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff80092012 at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in:0 at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in :0 at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in :0 at (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process () at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in :0 at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in :0
証明書が問題みたい。
mozrootsとかいうのを使えばいいみたいに書いてあるトコもあったけど、mozrootsでも直らなかった。
HttpWebRequestを使う前にSystem.Net.ServicePointManager.CertificatePolicyを更新するといいらしいので試してみた。
とりあえずこんなClassを用意してみた。
こんな感じに使用してみたらエラーが出なくなった。
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); HttpWebRequest authRequest = WebRequest.Create(clientLoginHandler) as HttpWebRequest;
参考
http://stackoverflow.com/questions/7306860/aws-s3-net-sdk