私のアプリはssl接続を介して証明書ファイルを使用してmqttブローカに接続します。Android、MQTT:ブローカ証明書の有効期限
証明書ファイル(.crt)と鍵ファイル(.key)をブローカーに設定しました。
私はPaho Mqtt Client APIを使用しています。このAPIには接続を確立するためにSSLSocketFactoryが必要です。
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