Frage

Ich schreibe Android-Anwendung. Wie kann ich Certificate in https Verbindung, wenn ich Zertifikat von Verzeichnisdatei initialisieren und nicht von Paketen?

Wenn ich Pakete Datei mit Passwort haben, dieser Code funktioniert:     

    KeyStore keyStore = KeyStore.getInstance("PKCS12");
    keyStore.load(certificateIs, pass.toCharArray());
    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
    kmf.init(keyStore, pass.toCharArray());
    SSLContext sc = SSLContext.getInstance("TLS");
    sc.init(kmf.getKeyManagers(), trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

Aber ich habe Zertifikat aus der Datei initialisiert:

    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    X509Certificate certificate = (X509Certificate) cf.generateCertificate(certBytes);

Ich weiß nicht, wie die Verwendung dieses Zertifikat über https Verbindung.

War es hilfreich?

Lösung

Sie scheinen über die Client-Zertifikat-Authentifizierung zu sprechen (wo Ihr Android-Gerät ist der Client).

Zunächst müssen Sie den Client, den privaten Schlüssel mit dem öffentlichen Schlüssel im Zertifikat haben, Ihnen passende zu verwenden sind versuchen (das der springende Punkt ist, sonst wäre es etwas nicht authentifiziert). 12 PKCS # ist eine der üblichen Formate für den privaten Schlüssel und das Zertifikat enthält. Wenn Sie nur das Zertifikat in einem haben die Datei, werden Sie wahrscheinlich nicht die privaten Schlüssel in ihm haben, daher wird es nicht funktionieren. Es ist noch nicht ganz aus Ihrer Frage klar, was Sie mit Ihrem certificate Variable tun, in Bezug auf die KeyManagerFactory (wenn Sie eine benutzerdefinierte X509KeyManager haben, sollte es den privaten Schlüssel in seiner getPrivateKey Methode zurückkehren, sonst wird es nicht funktionieren).

Zum anderen Client-Zertifikat-Authentifizierung wird immer vom Server initiiert, so dass Sie den Server benötigen würden dementsprechend auch eingerichtet werden soll (es scheint bereits den Fall zu sein, wenn Ihr Test basiert auf einem PKCS # 12-Schlüsselspeicher works) .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top