首页 > 解决方案 > 使用 X.509 证书连接到 AWS IoT 的 Android 应用程序

问题描述

我正在编写一个 Android 应用程序来将传感器连接到 AWS IoT 服务。

我已获得 X.509 证书、一对公私钥clientEndpoint等。

我正在尝试遵循 AWS 的示例代码(请参阅此处)。

说明很清楚,但我不想生成证书和密钥(我已经有了它们)。

下面是代码片段:

// Create a new private key and certificate. This call
// creates both on the server and returns them to the
// device.
CreateKeysAndCertificateRequest createKeysAndCertificateRequest = new CreateKeysAndCertificateRequest();
createKeysAndCertificateRequest.setSetAsActive(true);
final CreateKeysAndCertificateResult createKeysAndCertificateResult;
createKeysAndCertificateResult = mIotAndroidClient.createKeysAndCertificate(createKeysAndCertificateRequest);
Log.i(LOG_TAG,"Cert ID: " +createKeysAndCertificateResult.getCertificateId() +" created.");

// store in keystore for use in MQTT client
// saved as alias "default" so a new certificate isn't
// generated each run of this application
AWSIotKeystoreHelper.saveCertificateAndPrivateKey(certificateId,createKeysAndCertificateResult.getCertificatePem(),createKeysAndCertificateResult.getKeyPair().getPrivateKey(),
keystorePath, keystoreName, keystorePassword);
// load keystore from file into memory to pass on
// connection
clientKeyStore = AWSIotKeystoreHelper.getIotKeystore(certificateId,keystorePath, keystoreName, keystorePassword);

如何使用现有的证书文件而不是生成新的证书和密钥?

谢谢

标签: javaandroidamazon-web-servicesiot

解决方案


  1. 用于 AWSIotKeystoreHelper.isKeystorePresent(mKeystorePath, mKeystoreName)检查您的设备上是否已存在密钥库

  2. 使用检查别名AWSIotKeystoreHelper.keystoreContainsAlias(mCertificateId, mKeystorePath, mKeystorePassword)

  3. 使用获取密钥库keystore = AWSIotKeystoreHelper.getIotKeystore(mCertificateId, mKeystoreName, mKeystorePassword)

  4. 使用 mqttManager 上的 keystore 进行连接


推荐阅读