我正在尝试加载&使用来自文件的自签名,动态生成的PEM(或DER)X.509证书,并使用该证书通过HTTPClient或HttpsURLConnection加载内容,以便将其注入WebView。 我已经搜索了如何使用带有自定义证书的WebView,但显然只有完全忽略SSL错误的可能性(这不是我想要做的 - 我正在寻找证书验证)。
沿着这个Android developers training的行编码我总是从关键函数中得到例外:TrustManagerFactory,KeyStore和CertificateFactory。
对于TrustManagerFactory:
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
-> Unhandled exception type NoSuchAlgorithmException in getInstance()
对于KeyStore,我尝试了教程中的语法以及文档中描述的语法:
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
-> Unhandled exception type KeyStoreException in getInstance()
和
//Init with empty KeyStore
KeyStore keyStoreData;
//Use no protection for key store since it contains public cert
KeyStore.ProtectionParameter keyStoreProtect = null;
//Use default type
String keyStoreType = KeyStore.getDefaultType();
KeyStore.Builder builder = KeyStore.Builder.newInstance(keyStoreType, null, keyStoreProtect);
keyStoreData = builder.getKeyStore();
-> Unhandled exception type KeyStoreException in getKeyStore()
对于CertificateFactory:
CertificateFactory cf = CertificateFactory.getInstance("X.509");
-> Unhandled exception type CertificateException
总之,我不能使用作业所需的任何功能,因为即使我使用的是默认教程代码(根据文档仍然有效),它们都会因异常而失败。
切换IDE(尝试Android Studio和Eclipse with ADT),从OpenJDK切换到Oracle JDK,似乎没有任何帮助。 此外,StackOverflow和网络上的类似问题都通过使用这些功能中的一个或多个来回答 - 所以他们不帮助我。
如果有人知道我做错了什么,我会很高兴得到任何帮助!