Seit heute Morgen ist mein Zertifikat unter Android nicht mehr vertrauenswürdig und meine Anwendung kann keine Verbindung mehr herstellen:
Catch exception while startHandshake: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
return an invalid session with invalid cipher suite of SSL_NULL_WITH_NULL_NULL
javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:137)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:591)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:807)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:781)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:770)
Wenn ich es in Google Chrome (auf dem PC) versuche, gibt es kein Problem und das Zertifikat ist vertrauenswürdig. Wenn ich es jedoch im Chrome-Browser unter Android versuche, wird mir mitgeteilt, dass das Zertifikat nicht vertrauenswürdig ist. Was kann ich tun?
android
ssl-certificate
Alexis
quelle
quelle
Antworten:
Möglicherweise fehlt ein Zwischenzertifikat in Ihrer Zertifikatdatei. Wenn Sie bereits eine andere Website mit demselben Zertifikatsverkäufer besucht haben, wird das Zwischenzertifikat in Ihrem Browser gespeichert. Dies ist möglicherweise nicht bei jedem Besucher Ihrer Website der Fall - oder noch besser. Um ein fehlendes Zwischenzertifikat in der SSL-Verbindung zu beheben, müssen Sie das Zwischenzertifikat zu Ihrer eigenen Zertifikatdatei hinzufügen.
GoDaddy hat einige Informationen zu den Zwischenzertifikaten (aber die beste Quelle ist immer Ihr Zertifikatsanbieter): http://support.godaddy.com/help/article/868/what-is-an-intermediate-certificate
Ich hatte einmal diese Ausgabe eines Zwischenzertifikats (auch mit Commodo) und musste meine eigene Zertifikatsdatei mit den Zwischenzertifizierungsstellen kombinieren, um zu funktionieren. Danach sind keine Fehler mehr aufgetreten.
Installationsanweisungen pro Webserver von Godaddy: http://support.godaddy.com/help/article/5346/installing-an-ssl-server-instructions?locale=de
Und hier ist eine Liste der gängigsten Installationshandbücher von Commodo selbst: https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/1145/0/how-do-i-make- meine-eigene-Bundle-Datei-aus-CRT-Dateien
Je nachdem, welchen Webserver Sie verwenden, müssen Sie alle Zertifikate (Domänenzertifikat, Zwischen- und Stammzertifikat) angeben oder in der Reihenfolge zu einem (z. B. für Nginx) kombinieren:
Eine einfache Möglichkeit, dies in einem SSH-Terminal zu tun, besteht darin, Folgendes einzugeben:
Zertifikatstest-Tool
Wenn Sie auf weitere Probleme stoßen oder nicht sicher sind, ob das Zertifikat korrekt ist, versuchen Sie es mit einem Online-Tool, um Ihr SSL-Zertifikat zu überprüfen. Zum Beispiel: network4all.com/de/ssl+certificates/quickscan
SNI-Unterstützung für Android 2.2 und niedriger
Bitte beachten Sie, dass Android 2.2 (und wahrscheinlich älter) SNI nicht unterstützt, wodurch mehrere SSL-Zertifikate für verschiedene Hostnamen ohne Probleme mit einer einzigen IP-Adresse funktionieren können. Vielen Dank an @technyquist für die Bereitstellung dieser Informationen. Weitere Informationen zu diesem Problem finden Sie in dieser SO-Frage zu SNI .
quelle
Sie müssen ein CRT-Bundle erstellen, dann ist es in Ordnung. Sie erhalten drei CRT-Dateien. Benutze sie alle! Wenn Sie nur die domain.crt verwendet haben, wird auf Android, aber nicht auf dem PC eine Warnung angezeigt.
Ich bin auf Nginx. Ich habe domain_name.crt geöffnet und dann positivesslca2.crt geöffnet, alle ausgewählt und an das Ende von domain_name.crt kopiert. Öffnen Sie dann AddTrustExternalCARoot.crt und kopieren Sie es erneut an das Ende von domain_name.crt. Installieren Sie dann die Datei domain_name.crt
funktioniert gut.
quelle
Fügen Sie dies hier hinzu, da es jemandem helfen könnte. Ich hatte Probleme mit Android, das Popup und einen ungültigen Zertifikatfehler anzuzeigen.
Wir haben ein Comodo Extended Validation-Zertifikat und haben die Zip-Datei erhalten, die 4 Dateien enthielt:
Ich habe sie alle so in einer Zeile verkettet:
cat www_mydomain_com.crt COMODORSAExtendedValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt >www.mydomain.com.ev-ssl-bundle.crt
Dann habe ich diese Bundle-Datei als meine
ssl_certificate_key
in Nginx verwendet. Das war's, funktioniert jetzt.Inspiriert von diesem Kern: https://gist.github.com/ipedrazas/6d6c31144636d586dcc3
quelle
cat *yourdomainname*.crt *yourdomainname*.ca-bundle > cert_chain.crt
Mit Comodo PositiveSSL haben wir 4 Dateien erhalten.
Wenn wir den Anweisungen auf der Comodo-Site folgen, wird die Fehlermeldung angezeigt, dass in unserem Zertifikat eine Zwischenzertifikatsdatei fehlt.
Grundsätzlich ist die Syntax
quelle
Ich habe mich kürzlich mit diesem Commodo-Zertifikat befasst, das ich auf ssls.com gekauft habe, und ich hatte 3 Dateien:
domain-name.ca-bundle domain-name.crt und domain-name.p7b
Ich musste es auf Nginx einrichten und dies ist der Befehl, den ich ausgeführt habe:
Ich habe dann Commodo-ssl-bundle.crt in der Nginx-Konfigurationsdatei verwendet und funktioniert wie ein Zauber.
quelle
Ich hatte das gleiche Problem und mein Problem war, dass das Gerät nicht das richtige Datum und die richtige Uhrzeit hatte. Sobald ich behoben habe, dass das Zertifikat vertrauenswürdig ist.
quelle
Ich hatte den gleichen Fehler, weil ich kein Let's Encrypt-Zertifikat für www .my-domain.com ausgestellt habe, sondern nur für my-domain.com
Ausgabe auch für das www. und das Konfigurieren des vhost zum Laden von Zertifikaten für www .my-domain.com vor der Umleitung zu https://my-domain.com hat den Trick ausgeführt.
quelle
Ich habe dasselbe Problem unter Apache 2.2
SSLCertificateChainFile
festgestellt, als ich versucht habe, mehrere Anweisungen für jedes Zwischenzertifikat zu verwenden. Stattdessen musste ich alle drei zu einer einzigen Datei verketten. Als ich von GoDaddy kam, wo sie dies für mich als "Bündel" getan hatten, war dieser zusätzliche Schritt für mich neu, aber ein erneutes Lesen der Apache-Dokumentation machte dies deutlich.Bemerkenswert ist, dass diese Direktive ab Apache 2.4.8 veraltet ist, da Sie jetzt alle Zwischenprodukte mit dem tatsächlichen Zertifikat verketten können.
quelle
Ich hoffe, ich bin nicht zu spät, diese Lösung hier hat für mich funktioniert, ich verwende COMODO SSL, die oben genannten Lösungen scheinen im Laufe der Zeit ungültig, meine Website lifetanstic.co.ke
Anstatt den Comodo-Support zu kontaktieren und eine CA-Bundle-Datei zu erhalten, können Sie Folgendes tun:
Wenn Sie Ihr neues SSL-Zertifikat von Comodo (per E-Mail) erhalten, wird eine Zip-Datei angehängt. Sie müssen die Zip-Datei entpacken und die folgenden Dateien in einem Texteditor wie Notepad öffnen:
Kopieren Sie dann den Text jeder ".crt" -Datei und fügen Sie die Texte übereinander in das Feld "Certificate Authority Bundle (optional)" ein.
Fügen Sie danach einfach das SSL-Zertifikat wie gewohnt in das Feld "Zertifikat" ein, klicken Sie auf die Schaltfläche "Nach Zertifikat automatisch filtern" und klicken Sie auf "Installieren".
quelle
Bei Godaddy-Zertifikaten haben Sie höchstwahrscheinlich ein
domain.key
,gd_bundle_something.crt
und (zufällige alphanumerische Zeichenfolge)4923hg4k23jh4.crt
Sie müssen:
cat gd_bundle_something.crt >> 4923hg4k23jh4.crt
Und dann werden Sie auf Nginx verwenden
quelle
Ich hatte das gleiche Problem. Eine andere Möglichkeit, die richtige CRT-Datei zu generieren, ist folgende:
Manchmal erhalten Sie eine .PEM-Datei mit einer gesamten Zertifikatkette. Die Datei könnte so aussehen ....
Wenn Sie den gesamten
private key
Abschnitt entfernen , erhalten Sie eine gültige verkettete .crtquelle
Stellen Sie sicher, dass Sie auch Ihr Zwischen-CRT verwenden (CRT-Datei mit einem Bundle. Einige Anbieter nennen es auch Bundle oder CA-Zertifikat). dann in deiner ssl.conf,
Starten Sie dann Ihren Webserver neu: ex für Apache-Verwendung:
quelle
Möglicherweise fehlt Ihnen das Zertifikat auf Ihrem Gerät.
Schauen Sie sich diese Antwort an: Wie installiere ich ein vertrauenswürdiges CA-Zertifikat auf einem Android-Gerät? um zu sehen, wie Sie die Zertifizierungsstelle auf Ihrem eigenen Gerät installieren.
quelle
Ich hatte ein ähnliches Problem und schrieb einen ausführlichen Artikel darüber. Wenn jemand das gleiche Problem hat, können Sie meinen Artikel lesen.
https://developer-blog.net/administration/ssl-zertifikat-installieren/
Es ist eine detaillierte Problembeschreibung in deutscher Sprache.
quelle