我的应用通过ssl连接使用证书文件连接到mqtt代理。
我在我的经纪人中设置了证书文件(.crt)和密钥文件(.key)。
我使用Paho Mqtt Client api,这个api需要一个SSLSocketFactory来建立连接。
我使用Google示例创建一个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上的证书续订?
答案 0 :(得分:0)
我已使用相同的.key文件请求新证书,并且所有客户端都没有任何问题使用新的.crt连接到代理。
但是,使用相同的密钥进行证书续订是否安全?