我正在使用自簽名證書進行開發和測試。我調查了各種方法讓android模擬器接受自簽名證書。到目前爲止,我已經發現以下方法的變體:努力讓SSLCertificateSocketFactory在android模擬器上執行「socket.relaxsslcheck yes」
- 提供您自己的安全類,它將接受任何證書。
- 爲您的應用程序創建一個包含自簽名公鑰的密鑰庫。
- 將屬性socket.relaxsslcheck設置爲yes。
前兩個選項非常複雜,並將代碼引入到您的環境中,例如,開發,測試或產品。
選項3我喜歡因爲環境配置驅動行爲,與將容器中運行的應用程序提供配置的數據源的Web容器不同。開發環境將指向開發數據源等。不幸的是,我正在努力實現它的工作。我曾嘗試以下:
利用亞行設置屬性
adb shell setprop socket.relaxsslcheck yes
使用System.setProperty
System.setProperty("socket.relaxsslcheck","yes")
試圖做出改變/系統/ build.prop和default.prop
第一個選項被忽略。從我看過的內容看來,設置屬性將在重新啓動後生效。但該屬性似乎是不穩定的,它不能在仿真器重新啓動時存活。
System.setProperty(...)
方法似乎已經太遲了,因爲工廠已經創建。由於上述問題(代碼中的開發環境特定代碼),我不想走這條路線,除非沒有其他選擇。
最後一個選項應該可以在模擬器重新啓動後生存,但即使在運行adb root
後,我仍然無法寫入這些文件。
我是Android開發新手,希望瞭解一些最佳方法以及如何使其運行的一些指導。
我成功地在模擬器啓動時使用「./emulator -avd -prop socket.relaxsslcheck = true」來設置屬性,但仍然被SSLSocketCertificateFactory忽略 –
fransvn