我試圖連接到在Android Studio中使用自簽名證書的網站。我收到提示接受Android Studio中的自簽名證書Java代碼
java.security.cert.CertPathValidatorException:信任錨 證書路徑沒有找到
的,我稱之爲openStream()
的URL對象。
由於我的代碼位於測試環境中,因此我正在尋找解決方案來完全禁用證書檢查或明確允許證書。
昨天我花了幾個小時尋找解決方案,但每個指南都有幾年的歷史,並使用折舊的HTTP庫。
我試圖連接到在Android Studio中使用自簽名證書的網站。我收到提示接受Android Studio中的自簽名證書Java代碼
java.security.cert.CertPathValidatorException:信任錨 證書路徑沒有找到
的,我稱之爲openStream()
的URL對象。
由於我的代碼位於測試環境中,因此我正在尋找解決方案來完全禁用證書檢查或明確允許證書。
昨天我花了幾個小時尋找解決方案,但每個指南都有幾年的歷史,並使用折舊的HTTP庫。
如果您的minSdkVersion
爲24或更高,或者您只需要在此類設備上執行此測試,則可以通過network security configuration配置您的自簽名證書。
如果您的minSdkVersion
爲17或更高,可以使用my backport of network security configuration,最好使用OkHttp。
或者,還有其他using self-signed certificates with OkHttp的食譜。
除了@CommonsWare的回答,如果您的目標是API 14(ISC)或更高版本,您可以選擇在應用程序之外的設備上安裝額外的可信證書。說明可以找到here。
使用此方法安裝的證書由設備上的所有應用程序使用。
在API 14-23上,默認情況下用戶安裝的證書是可信的。然而,在API 24(Nougat)上,用戶添加證書的處理已更改,並且默認情況下不受信任。爲了使用戶值得信賴定義證書,下面的代碼添加到network config:
<network-security-config>
<base-config>
<trust-anchors>
<!-- Trust preinstalled CAs -->
<certificates src="system" />
<!-- Additionally trust user added CAs -->
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>
更多信息有關與辦證的牛軋糖的變化可以發現here。
沒有建議的修復程序似乎爲我工作。我的問題是模擬器本身阻止了證書嗎?我找不到在Nexus 5仿真器中添加證書的方法。 – Keifer
@Keifer,那麼我建議你在問題中添加更多信息:emuletor類型,操作系統版本,你嘗試過的和失敗的 – Vasiliy