2017-05-04 3 views
0

私のアプリは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で証明書の更新をどのように処理できますか?

+0

「改装」ではなく、取り消しまたは更新を意味しますか?また、証明書を更新してデバイスに配布することは、使用しているCAに完全に依存します。 – hardillb

+0

@hardillb私は更新を意味します。ありがとうございました。 – Kingslayerpy

答えて

0

私は同じ.keyファイルを使用して新しい証明書を要求しており、すべてのクライアントは新しい.crtを使用してブローカに接続する際に問題はありませんでした。

しかし、証明書の更新に同じ鍵を使用するのは安全ですか?

関連する問題