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上的证书续订?

+0

你的意思是撤销或更新,而不是“翻新”?同时更新证书并将其分发到设备将完全取决于您使用的CA. – hardillb

+0

@hardillb我的意思是更新。谢谢。 – Kingslayerpy

我已经使用相同的.key文件申请了一个新的证书,并且所有的客户端都没有用新的.crt连接到代理的任何问题。

但是,使用相同的密钥进行证书更新安全吗?