2017-06-01 2 views
1

Ich versuche, eine Verbindung zu einer Website herzustellen, die ein selbstsigniertes Zertifikat in Android Studio verwendet. Ich erhalte FehlerAkzeptieren selbstsignierter Zertifikate in Android Studio Java-Code

java.security.cert.CertPathValidatorException: Vertrauen Anker für Zertifizierungspfad nicht

für das URL-Objekt gefunden, die ich openStream() anrufen.

Da sich mein Code in einer Testumgebung befindet, suche ich nach einer Lösung, um entweder die Cert-Prüfung vollständig zu deaktivieren oder explizit ein Cert zuzulassen.

Ich habe gestern einige Stunden nach Lösungen gesucht, aber jedes Handbuch ist mehrere Jahre alt und verwendet abgeschriebene HTTP-Bibliotheken.

Antwort

0

Zusätzlich zur Antwort von @CommonsWare können Sie, wenn Sie API 14 (ISC) oder höher als Ziel haben, eine Option zum Installieren zusätzlicher vertrauenswürdiger Zertifikate auf dem Gerät außerhalb der Anwendung installieren. Die Anweisungen können here gefunden werden.

Mit dieser Methode installierte Zertifikate werden von allen Anwendungen auf dem Gerät verwendet.

In den APIs 14-23 ist das vom Benutzer installierte Zertifikat standardmäßig vertrauenswürdig. Auf API 24 (Nougat) wurde jedoch die Handhabung des vom Benutzer hinzugefügten Zertifikats geändert, und sie sind standardmäßig nicht vertrauenswürdig. Um benutzerdefinierte vertrauenswürdige Zertifikate, fügen Sie den folgenden Code zu network config zu machen:

<network-security-config> 
     <base-config> 
      <trust-anchors> 
       <!-- Trust preinstalled CAs --> 
       <certificates src="system" /> 
       <!-- Additionally trust user added CAs --> 
       <certificates src="user" /> 
      </trust-anchors> 
     </base-config> 
</network-security-config> 

Weitere Informationen über Änderungen in Nougat im Zusammenhang mit Zertifikaten Handhabung here zu finden sind.

+0

Keiner der vorgeschlagenen Fixes scheint für mich zu arbeiten. Ist mein Problem, dass der Emulator selbst das Cert blockiert? Ich kann keine Möglichkeit finden, Zertifikate in meinem Nexus 5-Emulator hinzuzufügen. – Keifer

+0

@Keifer, dann schlage ich vor, Sie fügen Sie weitere Informationen zu der Frage: emuletor Typ, OS-Version, was Sie versucht und fehlgeschlagen – Vasiliy

Verwandte Themen