Android 是否使用空InputStream和密码加载密钥库?
我遇到(继承)了以下代码:Android 是否使用空InputStream和密码加载密钥库?,android,ssl,keystore,Android,Ssl,Keystore,我遇到(继承)了以下代码: String ksType = KeyStore.getDefaultType(); KeyStore ks = KeyStore.getInstance(ksType); ks.load(null, null); SSLSocketFactory sockFactory = new SSLSocketFactory(ks); 调用KeyStoreload方法让我感到困惑。这段代码使用的密钥库是什么?我查看了密钥库文档,据我所知,这是合法的 但是,该代码不起作用
String ksType = KeyStore.getDefaultType();
KeyStore ks = KeyStore.getInstance(ksType);
ks.load(null, null);
SSLSocketFactory sockFactory = new SSLSocketFactory(ks);
调用KeyStore
load
方法让我感到困惑。这段代码使用的密钥库是什么?我查看了密钥库文档,据我所知,这是合法的
但是,该代码不起作用。应用程序获取服务器要连接的URL。应用程序抛出javax.net.ssl.SSLPeerUnverifiedException:无对等证书
错误-即使站点具有有效的ssl证书
在调试过程中,我添加了以下行:
Log.v(TAG,"ks has " + String.valueOf(ks.size()) + " entries.");
获取密钥库中的项数。它返回零
我觉得我对KeyStores有严重的误解
这个代码应该工作吗?它应该做什么
编辑
基于代码的使用方式(用于验证网站),我认为它是用作信任库,而不是密钥库。正在从
org.apache.http.conn.ssl
使用的SSLSocketFactory
。查看应用程序的资源,应用程序中似乎没有包含密钥库文件。我很困惑。如果它被用作密钥库,它可能会工作,但“null”也会工作。如果它被用作托管库,它将不起作用。您可以发布正在调用的SSLSocketFactory的构造函数吗
编辑:任何SSL客户端都需要一个非空的truststore来确保安全。随Java提供的密钥库对于大多数用途来说已经足够了。如果它被用作密钥库,它可能会工作,但“null”也会工作。如果它被用作托管库,它将不起作用。您可以发布正在调用的SSLSocketFactory的构造函数吗
编辑:任何SSL客户端都需要一个非空的truststore来确保安全。Java随附的问题对于大多数目的来说已经足够了。@EJP更新了问题以包括如何不工作。@EJP更新了问题以包括如何不工作。我的调试代码显示我有一个空的信任库。我如何告诉代码使用Java提供的信任库?我的调试代码显示我有一个空的信任库。我如何告诉代码使用Java提供的一个?