1

我有一个关于在Android环境中使用MQTT协议的问题。我们正在开发一个 Android 应用程序并使用com.ibm.micro.client.mqttv3_7.5.0.0.jar MQTT 客户端库向 Android 设备发送推送通知。我的问题是关于 SSL 连接。在桌面应用程序中,我们将 .keystore 文件复制到适当的位置并引用如下;

public Properties getSSLSettings() {
    final Properties properties = new Properties();
    properties.setProperty("com.ibm.ssl.keyStore",
        "C:/BKSKeystore/mqttclientkeystore.keystore");
    properties.setProperty("com.ibm.ssl.keyStoreType", "BKS");
    properties.setProperty("com.ibm.ssl.keyStorePassword", "passphrase");
    properties.setProperty("com.ibm.ssl.trustStore",
        "C:/BKSKeystore/mqttclienttrust.keystore");
    properties.setProperty("com.ibm.ssl.trustStoreType", "BKS");
    properties.setProperty("com.ibm.ssl.trustStorePassword", "passphrase ");

    return properties;
}

上面的代码可以完美地获取 SSL 设置。我们也在 Android 中实现了此代码,但很明显,在设备中保存 .keystore 文件根本不安全。我的问题是,是否有任何其他替代方法可以实现 SSL 连接,而无需在设备的内部或外部存储中存储 .keystore 文件?

4

1 回答 1

1

在更高版本的 android 中,您可以使用KeyChain访问设备的密钥库 以提供对私钥的访问。对于使用设备的信任库的信任库工作正常,android 默认使用它进行 SSL 连接。IBM 还拥有一个消息传递社区,其中包含有关在移动设备上使用其库的信息。

于 2013-01-08T14:14:23.937 回答