上传到TLS环境时使用Cordova的FileTransfer API时出错

时间:2015-02-07 19:06:43

标签: android cordova ssl cordova-plugins

当我尝试使用Cordova的FileTransfer API上传图片时,我在adb logcat(在Android上测试)中收到以下错误。服务器正在使用TLS v1.2。

D/FileTransfer(26152): chunkedMode: true
D/FileTransfer(26152): headers: null
D/FileTransfer(26152): objectId: 5
D/FileTransfer(26152): httpMethod: POST
D/FileTransfer(26152): Content Length: 10467
W/FileTransfer(26152): Error getting HTTP status code from connection.
W/FileTransfer(26152): javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x7c1a8ae0: Failure in SSL library, usually a protocol error
W/FileTransfer(26152): error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x7278bd74:0x00000000)
W/FileTransfer(26152):  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:448)
W/FileTransfer(26152):  at com.squareup.okhttp.Connection.upgradeToTls(Connection.java:140)
W/FileTransfer(26152):  at com.squareup.okhttp.Connection.connect(Connection.java:105)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:350)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:90)
W/FileTransfer(26152):  at com.squareup.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:162)
W/FileTransfer(26152):  at org.apache.cordova.filetransfer.FileTransfer$1.run(FileTransfer.java:382)
W/FileTransfer(26152):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/FileTransfer(26152):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/FileTransfer(26152):  at java.lang.Thread.run(Thread.java:841)
W/FileTransfer(26152): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x7c1a8ae0: Failure in SSL library, usually a protocol error
W/FileTransfer(26152): error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x7278bd74:0x00000000)
W/FileTransfer(26152):  at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
W/FileTransfer(26152):  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:405)

1 个答案:

答案 0 :(得分:0)

似乎必须为默认HTTPS端口443设置SSL证书,并且必须在不指定任何资源的情况下访问域(https://example.com必须是可访问的,而不仅仅是某些https://example.com/some-resource)。

相关问题