[ 
https://issues.apache.org/jira/browse/CB-12551?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17187756#comment-17187756
 ] 

Tim Brust commented on CB-12551:
--------------------------------

Closing, as we have ended support for Android API <22 in the meanwhile.

> File-Transfer download/upload fails in Android 4.4 or older using TLS 1.2
> -------------------------------------------------------------------------
>
>                 Key: CB-12551
>                 URL: https://issues.apache.org/jira/browse/CB-12551
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-plugin-file-transfer (DEPRECATED)
>            Reporter: Dani Palou
>            Priority: Major
>
> FileTransfer's download function fails when trying to download a file from a 
> site using TLS 1.2. This works fine in Android 5 or higher, but it fails in 
> Android 4.x.
> I searched a bit and I found that Android 4.4 should support TLS1.2 but it is 
> disabled by default. I applied the solution proposed in this post and it 
> worked for me:
> http://stackoverflow.com/a/33567745
> That is, I created the _MySSLSocketFactory_ class in the FileTransfer 
> project, and I used it in the _trustAllHosts_ function (line 636 of 
> _FileTransfer.java_):
> {noformat}
> SSLSocketFactory newFactory = new MySSLSocketFactory(sc.getSocketFactory());
> {noformat}
> I'm not sure if this can cause problems with other certificates, I don't know 
> much about this. It would be nice if the Cordova team could take a look at 
> this and check if it can be solved.
> This is the stacktrace:
> {noformat}
> Error getting HTTP status code from connection.
> javax.net.ssl.SSLException: Connection closed by peer
>  at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
>  at 
> com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:405)
>  at com.android.okhttp.Connection.upgradeToTls(Connection.java:146)
>  at com.android.okhttp.Connection.connect(Connection.java:107)
>  at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
>  at 
> com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
>  at 
> com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
>  at 
> com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
>  at 
> com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
>  at 
> com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:161)
>  at org.apache.cordova.filetransfer.FileTransfer$4.run(FileTransfer.java:869)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
>  at java.lang.Thread.run(Thread.java:841)
> {noformat}
> It can be tested with this code:
> {noformat}
> var ft = new FileTransfer(),
>     path = 'squirrel.jpg',
>     uri = 
> 'https://prototype.moodle.net/mobile/moodle32/webservice/pluginfile.php/314/mod_resource/content/3/squirrel.jpg?forcedownload=1&token=616455be9f363cc9631cab89cfcfa1cd';
> ft.download(uri, path, success, error, true);
> function success() {
>     console.log('Success');
> }
> function error(data) {
>     console.log('Error', data);
> }
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to