Page MenuHomePhabricator

is.gd broken with SSL error
Closed, ResolvedPublic

Description

2016-06-09 20:40:13,892 [10] ERROR Helpmebot.Repositories.ShortUrlCacheRepository [(null)] - Error encountered resolving URL
System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: The authentication or decryption has failed.
  at Mono.Security.Protocol.Tls.RecordProtocol.ProcessAlert (AlertLevel alertLevel, AlertDescription alertDesc) [0x00000] in <filename unknown>:0 
  at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
  at System.Net.HttpWebRequest.GetResponse () [0x00000] in <filename unknown>:0 
  at Helpmebot.Services.UrlShorteningService.GetShortUrl (System.String longUrl) [0x00000] in <filename unknown>:0 
  at Helpmebot.Repositories.ShortUrlCacheRepository+<GetShortUrl>c__AnonStorey0.<>m__0 (ISession session) [0x00000] in <filename unknown>:0 
  at Helpmebot.Repositories.RepositoryBase`1[Helpmebot.Model.ShortUrlCacheEntry].Transactionally (System.Action`1 callback, IsolationLevel level) [0x00000] in <filename unknown>:0

Blergh. https://bugzilla.xamarin.com/show_bug.cgi?id=26658

Event Timeline

stwalkerster changed the task status from Open to Stalled.Jun 10 2016, 1:11 AM
stwalkerster lowered the priority of this task from High to Normal.EditedJun 10 2016, 3:38 AM

This has been "fixed" by implementing a goo.gl URL shortener client as well, but this is realistically an "ostrich" solution.

Either:

  1. Mono / Xamarin need to pull their finger out and support modern crypto like TLS 1.1, TLS 1.2, and ECDH.
  2. We need to use a crypto library that supports ECDH + HTTP
  3. We need to use a crypto library that supports ECDH and roll our own HTTP
  4. We need to create an SSL-stripping proxy, with proper SSL cert validation
  5. We need to move away from Mono

Macro whythefuck: why the fuck do you not support TLS 1.1 in 2016

I mean, TLS 1.1 is ten years old.

Obviously, Mono fixing this is preferred.

Resolved by Mono using BoringSSL, latest version installed via upstream apt repo.