내 앱이 ssl 연결을 통해 인증서 파일을 사용하여 mqtt 브로커에 연결됩니다.Android, MQTT : 브로커 인증서 만료
인증서 파일 (.crt)과 키 파일 (.key)을 브로커에 설치했습니다.
저는 Paho Mqtt Client API를 사용하는데,이 API에는 연결을 설정하기 위해 SSLSocketFactory가 필요합니다.
Google 예제를 사용하여 Google CA를 키 저장소에 신뢰하는 TrustManager를 사용하여 SSLSocketFactory 인스턴스를 만듭니다.
// 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);
모든 것이 현재 정상적으로 작동합니다. 하지만 인증서는 2013 년 5 월 30 일에 만료됩니다.
어떻게 클라이언트 측 (Android)의 인증서를 처리해야합니까?
테스트 환경에서 새로운 인증서로 테스트를 거쳤습니다. 앱이 브로커에 연결할 수 없습니다. 예외 :
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
Android에서 인증서 갱신을 어떻게 처리 할 수 있습니까?
"개조"보다는 폐지 또는 갱신을 의미합니까? 또한 인증서를 갱신하고 장치에 배포하는 것은 사용중인 CA에 전적으로 의존합니다. – hardillb
@hardillb 나는 갱신을 의미합니다. 고맙습니다. – Kingslayerpy