title: Why does HttpsURLConnection throw an SSL Exception when connected to a WiFi Hotspot?
body: <p>I am working on an Android Application that connects to a remote API for additional data. Now just the other day my home WiFi went down so I decided to use my cellular Hotspot on my other phone. Strangely this threw a weird error in my application.</p>
  
  <pre><code>11-09 21:25:14.400 28932-28971/nl.lukehouben.scoutdrinks W/System.err: javax.net.ssl.SSLException: SSL handshake aborted: ssl=0xbe09b0: I/O error during system call, Connection reset by peer
          at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
          at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:410)
          at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:257)
          at libcore.net.http.HttpConnection.setupSecureSocket(HttpConnection.java:210)
          at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:477)
  11-09 21:25:14.410 28932-28971/nl.lukehouben.scoutdrinks W/System.err:     at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:441)
          at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
          at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
          at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
          at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
          at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:270)
          at nl.lukehouben.scoutdrinks.LoginActivity$getNetworkResult.doInBackground(LoginActivity.java:96)
          at nl.lukehouben.scoutdrinks.LoginActivity$getNetworkResult.doInBackground(LoginActivity.java:69)
  11-09 21:25:14.420 28932-28971/nl.lukehouben.scoutdrinks W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:264)
          at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
          at java.util.concurrent.FutureTask.run(FutureTask.java:137)
          at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
  11-09 21:25:14.430 28932-28971/nl.lukehouben.scoutdrinks W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
          at java.lang.Thread.run(Thread.java:856)
  </code></pre>
  
  <p>This error does not occur when I am connected to my home WiFi or using cellular data, it only occurs when I am connected to a mobile Hotspot. Anyone knows what is going on and how it can be fixed. My server has a valid LetsEncrypt certificate and my developing device runs on Android 4.0.4 (API 15).</p>
  
  <p>This is my code:</p>
  
  <pre class="lang-java prettyprint-override"><code>protected String doInBackground(String... strings) {
              try {
                  url = new URL("my_link");
                  conn = (HttpsURLConnection) url.openConnection();
                  conn.setRequestMethod("GET");
                  conn.setConnectTimeout(10000);
  
                  InputStream inputStream = conn.getInputStream();
                  InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                  BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                  String line = bufferedReader.readLine();
  
  
                  return line;
              }
              catch(Exception e) {
                  e.printStackTrace();
              }
  }
  </code></pre>
  
  <p><strong>EDIT:</strong>
  As recommended by someone I made a Wireshark dump containing the traffic between my server and the debugging device. Maybe this will shed some light on the issue?</p>
  
  <pre><code>No.     Time           Source                Destination           Protocol Length Info
        1 0.000000       192.168.43.142        89.40.13.226          TCP      66     27869 → 443 [SYN] Seq=0 Win=17520 Len=0 MSS=1460 WS=256 SACK_PERM=1
  
  Frame 1: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface 0
  Ethernet II, Src: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e), Dst: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66)
  Internet Protocol Version 4, Src: 192.168.43.142, Dst: 89.40.13.226
  Transmission Control Protocol, Src Port: 27869, Dst Port: 443, Seq: 0, Len: 0
  
  No.     Time           Source                Destination           Protocol Length Info
        2 0.086557       89.40.13.226          192.168.43.142        TCP      66     443 → 27869 [SYN, ACK] Seq=0 Ack=1 Win=14600 Len=0 MSS=1300 SACK_PERM=1 WS=512
  
  Frame 2: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface 0
  Ethernet II, Src: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66), Dst: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e)
  Internet Protocol Version 4, Src: 89.40.13.226, Dst: 192.168.43.142
  Transmission Control Protocol, Src Port: 443, Dst Port: 27869, Seq: 0, Ack: 1, Len: 0
  
  No.     Time           Source                Destination           Protocol Length Info
        3 0.086709       192.168.43.142        89.40.13.226          TCP      54     27869 → 443 [ACK] Seq=1 Ack=1 Win=17408 Len=0
  
  Frame 3: 54 bytes on wire (432 bits), 54 bytes captured (432 bits) on interface 0
  Ethernet II, Src: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e), Dst: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66)
  Internet Protocol Version 4, Src: 192.168.43.142, Dst: 89.40.13.226
  Transmission Control Protocol, Src Port: 27869, Dst Port: 443, Seq: 1, Ack: 1, Len: 0
  
  No.     Time           Source                Destination           Protocol Length Info
        4 0.094828       192.168.43.142        89.40.13.226          TLSv1.2  571    Client Hello
  
  Frame 4: 571 bytes on wire (4568 bits), 571 bytes captured (4568 bits) on interface 0
  Ethernet II, Src: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e), Dst: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66)
  Internet Protocol Version 4, Src: 192.168.43.142, Dst: 89.40.13.226
  Transmission Control Protocol, Src Port: 27869, Dst Port: 443, Seq: 1, Ack: 1, Len: 517
  Secure Sockets Layer
      TLSv1.2 Record Layer: Handshake Protocol: Client Hello
          Content Type: Handshake (22)
          Version: TLS 1.0 (0x0301)
          Length: 512
          Handshake Protocol: Client Hello
  
  No.     Time           Source                Destination           Protocol Length Info
        5 0.163546       89.40.13.226          192.168.43.142        TCP      54     443 → 27869 [ACK] Seq=1 Ack=518 Win=15872 Len=0
  
  Frame 5: 54 bytes on wire (432 bits), 54 bytes captured (432 bits) on interface 0
  Ethernet II, Src: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66), Dst: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e)
  Internet Protocol Version 4, Src: 89.40.13.226, Dst: 192.168.43.142
  Transmission Control Protocol, Src Port: 443, Dst Port: 27869, Seq: 1, Ack: 518, Len: 0
  
  No.     Time           Source                Destination           Protocol Length Info
        6 0.164487       89.40.13.226          192.168.43.142        TLSv1.2  1354   Server Hello
  
  Frame 6: 1354 bytes on wire (10832 bits), 1354 bytes captured (10832 bits) on interface 0
  Ethernet II, Src: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66), Dst: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e)
  Internet Protocol Version 4, Src: 89.40.13.226, Dst: 192.168.43.142
  Transmission Control Protocol, Src Port: 443, Dst Port: 27869, Seq: 1, Ack: 518, Len: 1300
  Secure Sockets Layer
      TLSv1.2 Record Layer: Handshake Protocol: Server Hello
          Content Type: Handshake (22)
          Version: TLS 1.2 (0x0303)
          Length: 109
          Handshake Protocol: Server Hello
  
  No.     Time           Source                Destination           Protocol Length Info
        7 0.164693       89.40.13.226          192.168.43.142        TCP      1354   443 → 27869 [ACK] Seq=1301 Ack=518 Win=15872 Len=1300 [TCP segment of a reassembled PDU]
  
  Frame 7: 1354 bytes on wire (10832 bits), 1354 bytes captured (10832 bits) on interface 0
  Ethernet II, Src: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66), Dst: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e)
  Internet Protocol Version 4, Src: 89.40.13.226, Dst: 192.168.43.142
  Transmission Control Protocol, Src Port: 443, Dst Port: 27869, Seq: 1301, Ack: 518, Len: 1300
  
  No.     Time           Source                Destination           Protocol Length Info
        8 0.164722       192.168.43.142        89.40.13.226          TCP      54     27869 → 443 [ACK] Seq=518 Ack=2601 Win=17408 Len=0
  
  Frame 8: 54 bytes on wire (432 bits), 54 bytes captured (432 bits) on interface 0
  Ethernet II, Src: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e), Dst: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66)
  Internet Protocol Version 4, Src: 192.168.43.142, Dst: 89.40.13.226
  Transmission Control Protocol, Src Port: 27869, Dst Port: 443, Seq: 518, Ack: 2601, Len: 0
  
  No.     Time           Source                Destination           Protocol Length Info
        9 0.165717       89.40.13.226          192.168.43.142        TLSv1.2  487    Certificate, Server Key Exchange, Server Hello Done
  
  Frame 9: 487 bytes on wire (3896 bits), 487 bytes captured (3896 bits) on interface 0
  Ethernet II, Src: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66), Dst: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e)
  Internet Protocol Version 4, Src: 89.40.13.226, Dst: 192.168.43.142
  Transmission Control Protocol, Src Port: 443, Dst Port: 27869, Seq: 2601, Ack: 518, Len: 433
  [3 Reassembled TCP Segments (2572 bytes): #6(1186), #7(1300), #9(86)]
  Secure Sockets Layer
      TLSv1.2 Record Layer: Handshake Protocol: Certificate
          Content Type: Handshake (22)
          Version: TLS 1.2 (0x0303)
          Length: 2567
          Handshake Protocol: Certificate
  Secure Sockets Layer
      TLSv1.2 Record Layer: Handshake Protocol: Server Key Exchange
          Content Type: Handshake (22)
          Version: TLS 1.2 (0x0303)
          Length: 333
          Handshake Protocol: Server Key Exchange
      TLSv1.2 Record Layer: Handshake Protocol: Server Hello Done
          Content Type: Handshake (22)
          Version: TLS 1.2 (0x0303)
          Length: 4
          Handshake Protocol: Server Hello Done
  
  No.     Time           Source                Destination           Protocol Length Info
       10 0.168158       192.168.43.142        89.40.13.226          TLSv1.2  180    Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
  
  Frame 10: 180 bytes on wire (1440 bits), 180 bytes captured (1440 bits) on interface 0
  Ethernet II, Src: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e), Dst: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66)
  Internet Protocol Version 4, Src: 192.168.43.142, Dst: 89.40.13.226
  Transmission Control Protocol, Src Port: 27869, Dst Port: 443, Seq: 518, Ack: 3034, Len: 126
  Secure Sockets Layer
      TLSv1.2 Record Layer: Handshake Protocol: Client Key Exchange
          Content Type: Handshake (22)
          Version: TLS 1.2 (0x0303)
          Length: 70
          Handshake Protocol: Client Key Exchange
      TLSv1.2 Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
          Content Type: Change Cipher Spec (20)
          Version: TLS 1.2 (0x0303)
          Length: 1
          Change Cipher Spec Message
      TLSv1.2 Record Layer: Handshake Protocol: Encrypted Handshake Message
          Content Type: Handshake (22)
          Version: TLS 1.2 (0x0303)
          Length: 40
          Handshake Protocol: Encrypted Handshake Message
  
  No.     Time           Source                Destination           Protocol Length Info
       11 0.255375       89.40.13.226          192.168.43.142        TLSv1.2  105    Change Cipher Spec, Encrypted Handshake Message
  
  Frame 11: 105 bytes on wire (840 bits), 105 bytes captured (840 bits) on interface 0
  Ethernet II, Src: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66), Dst: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e)
  Internet Protocol Version 4, Src: 89.40.13.226, Dst: 192.168.43.142
  Transmission Control Protocol, Src Port: 443, Dst Port: 27869, Seq: 3034, Ack: 644, Len: 51
  Secure Sockets Layer
      TLSv1.2 Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
          Content Type: Change Cipher Spec (20)
          Version: TLS 1.2 (0x0303)
          Length: 1
          Change Cipher Spec Message
      TLSv1.2 Record Layer: Handshake Protocol: Encrypted Handshake Message
          Content Type: Handshake (22)
          Version: TLS 1.2 (0x0303)
          Length: 40
          Handshake Protocol: Encrypted Handshake Message
  
  No.     Time           Source                Destination           Protocol Length Info
       12 0.255951       192.168.43.142        89.40.13.226          TLSv1.2  85     Encrypted Alert
  
  Frame 12: 85 bytes on wire (680 bits), 85 bytes captured (680 bits) on interface 0
  Ethernet II, Src: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e), Dst: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66)
  Internet Protocol Version 4, Src: 192.168.43.142, Dst: 89.40.13.226
  Transmission Control Protocol, Src Port: 27869, Dst Port: 443, Seq: 644, Ack: 3085, Len: 31
  Secure Sockets Layer
      TLSv1.2 Record Layer: Encrypted Alert
          Content Type: Alert (21)
          Version: TLS 1.2 (0x0303)
          Length: 26
          Alert Message: Encrypted Alert
  
  No.     Time           Source                Destination           Protocol Length Info
       13 0.257712       192.168.43.142        89.40.13.226          TCP      54     27869 → 443 [FIN, ACK] Seq=675 Ack=3085 Win=16896 Len=0
  
  Frame 13: 54 bytes on wire (432 bits), 54 bytes captured (432 bits) on interface 0
  Ethernet II, Src: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e), Dst: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66)
  Internet Protocol Version 4, Src: 192.168.43.142, Dst: 89.40.13.226
  Transmission Control Protocol, Src Port: 27869, Dst Port: 443, Seq: 675, Ack: 3085, Len: 0
  
  No.     Time           Source                Destination           Protocol Length Info
       14 0.322180       89.40.13.226          192.168.43.142        TCP      66     [TCP Dup ACK 11#1] 443 → 27869 [ACK] Seq=3085 Ack=644 Win=15872 Len=0 SLE=675 SRE=676
  
  Frame 14: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface 0
  Ethernet II, Src: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66), Dst: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e)
  Internet Protocol Version 4, Src: 89.40.13.226, Dst: 192.168.43.142
  Transmission Control Protocol, Src Port: 443, Dst Port: 27869, Seq: 3085, Ack: 644, Len: 0
  
  No.     Time           Source                Destination           Protocol Length Info
       15 0.322181       89.40.13.226          192.168.43.142        TCP      54     443 → 27869 [ACK] Seq=3085 Ack=676 Win=15872 Len=0
  
  Frame 15: 54 bytes on wire (432 bits), 54 bytes captured (432 bits) on interface 0
  Ethernet II, Src: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66), Dst: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e)
  Internet Protocol Version 4, Src: 89.40.13.226, Dst: 192.168.43.142
  Transmission Control Protocol, Src Port: 443, Dst Port: 27869, Seq: 3085, Ack: 676, Len: 0
  
  No.     Time           Source                Destination           Protocol Length Info
       16 0.323105       89.40.13.226          192.168.43.142        TCP      54     443 → 27869 [FIN, ACK] Seq=3085 Ack=676 Win=15872 Len=0
  
  Frame 16: 54 bytes on wire (432 bits), 54 bytes captured (432 bits) on interface 0
  Ethernet II, Src: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66), Dst: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e)
  Internet Protocol Version 4, Src: 89.40.13.226, Dst: 192.168.43.142
  Transmission Control Protocol, Src Port: 443, Dst Port: 27869, Seq: 3085, Ack: 676, Len: 0
  
  No.     Time           Source                Destination           Protocol Length Info
       17 0.323206       192.168.43.142        89.40.13.226          TCP      54     27869 → 443 [ACK] Seq=676 Ack=3086 Win=16896 Len=0
  
  Frame 17: 54 bytes on wire (432 bits), 54 bytes captured (432 bits) on interface 0
  Ethernet II, Src: 3a:d3:b8:d8:4f:9e (3a:d3:b8:d8:4f:9e), Dst: HuaweiTe_86:6a:66 (b4:86:55:86:6a:66)
  Internet Protocol Version 4, Src: 192.168.43.142, Dst: 89.40.13.226
  Transmission Control Protocol, Src Port: 27869, Dst Port: 443, Seq: 676, Ack: 3086, Len: 0
  </code></pre>
  
  <p><a href="https://drive.google.com/file/d/143TSTfH4iW2V56QYyhP-GKz5DQSgHk1h/view?usp=sharing" rel="nofollow noreferrer">Download WireShark File</a></p>