簡體   English   中英

在SSL環境中使用Cordova filetransfer上傳文件時出錯

[英]Error uploading file using Cordova filetransfer in SSL environment

在Worklight Development Server在HTTPS中運行時,嘗試使用Cordova File Transfer API上載文件時遇到問題。

我創建了具有有效CA的證書,並將其放入服務器中,並將其導入到Android仿真器中。

我可以使用File Transfer API登錄到應用程序並下載數據,但是當我嘗試使用它來上傳數據時,我在LogCat中收到以下消息。

該代碼正在調用用我們的WL應用程序實現的servlet,以執行下載和上傳。

11-26 09:20:27.854: E/FileTransfer(2362): {"target":"https:\/\/my-ip-address\/APP\/appServlet","source":"file:\/\/\/storage\/sdcard\/anywhere\/wilson\/app2\/it_1305\/1416946570255.jpg","http_status":0,"code":3}
11-26 09:20:27.854: E/FileTransfer(2362): java.io.IOException: Hostname 'my-ip-address' was not verified
11-26 09:20:27.854: E/FileTransfer(2362):   at com.squareup.okhttp.Connection.upgradeToTls(Connection.java:146)
11-26 09:20:27.854: E/FileTransfer(2362):   at com.squareup.okhttp.Connection.connect(Connection.java:106)
11-26 09:20:27.854: E/FileTransfer(2362):   at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:287)
11-26 09:20:27.854: E/FileTransfer(2362):   at com.squareup.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:248)
11-26 09:20:27.854: E/FileTransfer(2362):   at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:197)
11-26 09:20:27.854: E/FileTransfer(2362):   at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:383)
11-26 09:20:27.854: E/FileTransfer(2362):   at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
11-26 09:20:27.854: E/FileTransfer(2362):   at com.squareup.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:179)
11-26 09:20:27.854: E/FileTransfer(2362):   at org.apache.cordova.filetransfer.FileTransfer$1.run(FileTransfer.java:388)
11-26 09:20:27.854: E/FileTransfer(2362):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
11-26 09:20:27.854: E/FileTransfer(2362):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
11-26 09:20:27.854: E/FileTransfer(2362):   at java.lang.Thread.run(Thread.java:841)
11-26 09:20:27.854: E/FileTransfer(2362): Failed after uploading 0 of 18725 bytes.

該錯誤意味着您沒有將服務器的主機名用作證書的CN。 Android會驗證CN(公用名)是否與主機名匹配,否則證書無效,因為它可能是使用您的證書假裝自己的其他任何服務器(有關此信息,請參見此處)

如果您的服務器沒有主機名(例如hostname.com中的IP地址),則必須在“使用者備用名稱”(SAN)中指定IP作為證書擴展的一部分。 請參閱此答案,以了解如何將其添加為擴展。 確切的過程將取決於您用來生成證書的工具。

有關更多詳細信息, 參閱此處的android文檔,了解如何處理HTTPS和SSL。 特別是,他們有一節說明如何處理您遇到的問題,標題為“主機名驗證的常見問題”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM