我不是密钥库方面的专家,很难理解其中的细微差别,但我已经做了这么多:
在使用asmack构建创建xmpp-连接时 here,仍然需要更改truststore,通常来说,根据网上多个sources 的说法,可以使用以下命令来完成。
这在旧版的Android上运行良好,但在ICS下,他们改变了一些东西,现在不再适用。路径现在不同了。
显然这可以修复,但我毫无头绪。
显然需要一个方法根据SDK版本返回路径,以返回所需的字符串来设置sdk-path,因为您不能只将密钥库本身返回到xmpp连接中。
参考这个,该方法如下:
在使用asmack构建创建xmpp-连接时 here,仍然需要更改truststore,通常来说,根据网上多个sources 的说法,可以使用以下命令来完成。
ConnectionConfiguration config = new ConnectionConfiguration(host, Integer.parseInt(port), service);
config.setTruststorePath("/system/etc/security/cacerts.bks");
config.setTruststorePassword("changeit");
config.setTruststoreType("bks");
XMPPConnection connection = new XMPPConnection(connConfig);
connection.connect();
这在旧版的Android上运行良好,但在ICS下,他们改变了一些东西,现在不再适用。路径现在不同了。
显然这可以修复,但我毫无头绪。
显然需要一个方法根据SDK版本返回路径,以返回所需的字符串来设置sdk-path,因为您不能只将密钥库本身返回到xmpp连接中。
参考这个,该方法如下:
private String getTrustStorePath()
{
String path = System.getProperty("javax.net.ssl.trustStore");
if (path == null)
{
if ( Build.VERSION.SDK_INT >= 14 )
{
//THIS IS THE PART I DONT KNOW
path="";
}
else
{
path = "/system/etc/security/cacerts.bks";
}
return path;
}
这里 有一位评论者说,在Android“4.x; /etc/security/cacerts.bks被替换成包含单个PEM编码文件的证书的目录/etc/security/cacerts/。”但是,我不知道这与任何相关性(如果有的话)。