【发布时间】:2015-03-15 01:33:46
【问题描述】:
因为我被指示在我自己的问题中提出这个问题,所以我在这里这样做。
看到Original Topic我第一次问我的问题(现已删除)。
我遇到了同样的问题,不幸的是作者的答案没有帮助。
为了更详细地介绍我的问题,我使用 Java 8 (v8.0.25 - JDK) 在 Internet 上的 Tomcat 8 (v8.0.15) 服务器上使用自签名证书。我在那里托管我的 Java EE 应用程序,它是我的 Android 应用程序的后端。 Tomcat 的 SSL 连接器可以正常工作。当我使用 RESTClient 测试后端时,我得到了预期的结果。
我用一个证书创建了密钥库:
keytool -genkey -alias tomcat -keystore tomcat.keystore
-storepass MYKEYSTOREPASS -keyalg RSA -keysize 2048 -validity 365
然后我提取证书:
keytool -export -alias tomcat -storepass MYKEYSTOREPASS
-keystore tomcat.keystore -file tomcat.cer
最后,我为我的 Android 应用程序创建了一个 BKS 格式的新密钥库:
keytool -import -alias tomcat -file tomcat.cer -keypass MYKEYSTOREPASS
-keystore tomcat.bks -storetype BKS -storepass MYKEYSTOREPASS
-providerClass org.bouncycastle.jce.provider.BouncyCastleProvider
-providerpath $PATH_TO_BC_LIBRARY/bcprov-jdk16-146.jar
(如here 提到的“-export”和“-import”参数来自前面 发布但仍然可用。所以你也可以知道这个命令 参数为“-exportcert”和“-importcert”)
完成这些步骤后,我尝试连接,一切正常。但直到我停用/离开我的 WLAN 连接。然后它不再工作并带来“javax.net.ssl.SSLPeerUnverifiedException:没有对等证书”。
我真的不明白这种行为。
为了让 android 端更亮一点:
我以完全相同的方式使用了来自this tutorial 的类/库。
如果有什么遗漏,请评论,我会带来信息。
提前非常感谢!
【问题讨论】:
-
你使用的是本地tomcat服务器吗?
-
嗨 Suhail Mehta,我编辑了我的问题。
-
您所说的“位于 www”是什么意思,是否意味着它位于您的 wifi 网络外部的某个服务器上?
-
是的,它在我的 wifi 网络之外。 (我编辑了我的问题...)
标签: android ssl https wifi android-volley