Android,MQTT:经纪商证书到期
问题描述:
我的应用通过ssl连接使用证书文件连接到mqtt经纪商。Android,MQTT:经纪商证书到期
我在代理中设置证书文件(.crt)和密钥文件(.key)。
我使用Paho Mqtt客户端API,并且此API需要SSLSocketFactory来建立连接。
我使用Google示例创建了一个带TrustManager的SSLSocketFactory实例,该TrustManager在密钥库中信任我们的CA.
// Load CAs from an InputStream
// (could be from a resource or ByteArrayInputStream or ...)
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream caInput = new BufferedInputStream(new
FileInputStream("load-der.crt"));
Certificate ca;
try {
ca = cf.generateCertificate(caInput);
System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
} finally {
caInput.close();
}
// Create a KeyStore containing our trusted CAs
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);
// Create a TrustManager that trusts the CAs in our KeyStore
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
// Create an SSLContext that uses our TrustManager
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);
现在一切工作正常。但是,证书将在2017年5月30日到期。
我该如何处理客户端(Android)中的证书?
我已经在测试环境中使用新证书进行了测试。该应用程序无法连接到经纪人。例外是:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
如何处理Android上的证书续订?
答
我已经使用相同的.key文件申请了一个新的证书,并且所有的客户端都没有用新的.crt连接到代理的任何问题。
但是,使用相同的密钥进行证书更新安全吗?
你的意思是撤销或更新,而不是“翻新”?同时更新证书并将其分发到设备将完全取决于您使用的CA. – hardillb
@hardillb我的意思是更新。谢谢。 – Kingslayerpy