Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否使用空InputStream和密码加载密钥库?_Android_Ssl_Keystore - Fatal编程技术网

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提供的一个?