我在API调用时使用Https时遇到问题Android L 5.0
。我正在关注例外。
javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
11-26 15:35:01.919: W/System.err(353): at com.android.org.conscrypt.SSLNullSession.getPeerCertificates(SSLNullSession.java:104)
11-26 15:35:01.919: W/System.err(353): at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
11-26 15:35:01.919: W/System.err(353): at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:388)
11-26 15:35:01.919: W/System.err(353): at org.apache.http.impl.conn.DefaultClientConnectionOperator.updateSecureConnection(DefaultClientConnectionOperator.java:231)
11-26 15:35:01.919: W/System.err(353): at org.apache.http.impl.conn.AbstractPoolEntry.layerProtocol(AbstractPoolEntry.java:302)
11-26 15:35:01.920: W/System.err(353): at org.apache.http.impl.conn.AbstractPooledConnAdapter.layerProtocol(AbstractPooledConnAdapter.java:146)
11-26 15:35:01.920: W/System.err(353): at org.apache.http.impl.client.DefaultRequestDirector.establishRoute(DefaultRequestDirector.java:654)
11-26 15:35:01.920: W/System.err(353): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:370)
11-26 15:35:01.920: W/System.err(353): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11-26 15:35:01.920: W/System.err(353): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11-26 15:35:01.920: W/System.err(353): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11-26 15:35:01.920: W/System.err(353): at com.praxify.model.CallServer.makeHttpGetRequest(CallServer.java:1515)
答案 0 :(得分:1)
我已经处理了这个问题了几天,最后我发现了这个问题,(但不是解决方案)。问题是,自Android 5以来,谷歌不信任2016年后过期的SHA1证书(你可以检查这是你通过浏览器连接并查看锁定的情况)。 对我来说,我们唯一能做的就是要求使用SHA256 或SHA1证书的新服务器证书。到期日为2015年。 抱歉我的英文
此处也进行了讨论:https://code.google.com/p/android-developer-preview/issues/detail?id=1200
答案 1 :(得分:0)
在找到几天之后,我遇到了针对API调用的volley lib,这有助于我们解决这个问题,您可以参考volley lib来处理API调用。 Volley lib适合我。
找到另一个issue。
Lollpop:应用内结算已损坏,因为从APK证书计算的SHA1指纹与开发者控制台和KitKat中的SHA1不同
答案 2 :(得分:0)
我有同样的问题。对我来说问题是因为服务器使用的是DES-CBC3-SHA密码,而在Android 5.0中,默认情况下不再启用对它的支持。有关此处的更多信息:https://developer.android.com/reference/javax/net/ssl/SSLSocket.html
所以这个问题的解决方案是: a)更改服务器配置,以便服务器支持一些更现代的密码(它没有被无理由禁用)。 b)启用对密码的支持。
要检查您可以使用的服务器的密码:
openssl s_client -connect www.myurl.com:443
希望这有助于某人。