Ich rufe den Web Service von meinem Android Client über https an. Ich habe das Zertifikat von der Server-Seite zu validieren. Wie mache ich das ? Derzeit ist dies mein Code, mit dem ich einen Webservice anrufe.
%Vor%Wie validiere ich ein selbstsigniertes Zertifikat, das während der Ausführung von Post vom Server empfangen wurde? Ich muss Tests über öffentliche / private Schlüssel durchführen. Der Client wird eine CA-Datei haben. Ich brauche nur den Client, um das Server-Zertifikat mit der CA zu überprüfen, der Dienst ist öffentlich. Dies hat mit öffentlichen / privaten Schlüssel zu tun. Wie kann ich das Zertifikat vom Server erhalten, bevor ich den Post anrufe?
Es gibt verschiedene Optionen und Code-Snippets, die auf stackoverflow verfügbar sind. Ein paar Links, die ich mit mehreren Antworten gefunden habe, sind: Akzeptieren eines Zertifikats für HTTPs auf Android HTTPS GET (SSL) mit Android und selbst signiertem Server Zertifikat
Aber ich kann nicht erkennen, was gut / anwendbar für mich ist! Ich möchte nicht alle deaktivieren oder akzeptieren. Überprüfen Sie die öffentlichen / privaten Schlüssel /
Jede Hilfe wird sehr geschätzt.
Bob Lee hat einen schönen Blogeintrag zur Verwendung von SSL-Zertifikaten mit Android geschrieben. Ich denke, dass es auf Ihren Fall anwendbar ist: Ссылка
Sie müssen lediglich ein KeyStore
erstellen, das Ihr selbstsigniertes Zertifikat enthält, und die benutzerdefinierte HttpClient
Implementierung verwenden, die in diesem Beitrag beschrieben wird.
UPDATE:
Die Validierung des Hostnamens kann durch Festlegen einer benutzerdefinierten X509HostnameVerifier
für SSLSocketFactory
. Einige Implementierungen sind bereits in android verfügbar: AllowAllHostnameVerifier
, BrowserCompatHostnameVerifier
, StrictHostnameVerifier
Tags und Links android ssl web-services certificate