Xamarin.Forms sending HttpClient GET or POST request to API with TLS 1.3

2

Any idea what is the workaround on my App. My app works perfectly before when our server using TLS 1.2,After we upgraded to TLS 1.3, all HttpClient POST and GET Request are not working and get the exception

INNER EXCEPTION

Javax.Net.Ssl.SSLProtocolException: SSL handshake aborted: ssl=0xcb444f08: Failure in SSL library, usually a protocol error
error:1000042e:SSL routines:OPENSSL_internal:TLSV1_ALERT_PROTOCOL_VERSION (external/boringssl/src/ssl/tls_record.cc:592 0xcb172b48:0x00000001)
  --- End of managed Javax.Net.Ssl.SSLProtocolException stack trace ---
javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xcb444f08: Failure in SSL library, usually a protocol error
error:1000042e:SSL routines:OPENSSL_internal:TLSV1_ALERT_PROTOCOL_VERSION (external/boringssl/src/ssl/tls_record.cc:592 0xcb172b48:0x00000001)
    at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
    at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:375)
    at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:224)
    at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:192)
    at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:149)
    at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
    at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
    at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
    at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
    at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
    at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
    at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)
    at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:26)

Below image is the advance Android Option configuration I used. enter image description here

Below snippets is ny HttpClient setup for HttpClient request.

public HttpClient httpClient { get; set; }

public ApiServiceBase()
{
    this.httpClient = new HttpClient() { BaseAddress = BaseAddress };
    this.httpClient.Timeout = TimeSpan.FromSeconds(60);
    this.httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}

enter image description here

  • Visual Studio Community 2019 Version 16.7.2
  • .Net Framework Version 4.8
xamarin.forms
xamarin.android
tls1.3
asked on Stack Overflow Aug 22, 2020 by parpar • edited Aug 26, 2020 by Brandon Minnick

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0