SSL-Peer-Zertifikat oder SSH-Remote-Schlüssel war nicht OK

8

Ich teste eine API, die curl_exec php-Funktion und ein CA-Zertifikat verwendet, aber etwas läuft schief und ich bin ein wenig verloren.

Ich habe SSL auf meinem Apache VirtualHost konfiguriert und sieht gut aus (opening https:://[myVHost] ... funktioniert).

Wie auch immer, der API-Curl-Aufruf gibt mir diese Nachricht zurück:

  • SSL peer certificate or SSH remote key was not OK

Ich bin nicht sehr erfahren mit SSL, also habe ich nur wenige Ideen über die Ursache.

UPDATE:

Dies ist der Code, den ich in meiner cURL-Anfrage verwende, ich habe 2 Zeilen kommentiert und ihren Wert geändert (siehe 'TODO'-Zeile) und auf diese Weise funktioniert es, aber das ist nur eine Arbeit. .

%Vor%     
WonderLand 07.01.2013, 09:11
quelle

6 Antworten

4

Sie verwenden wahrscheinlich selbstsignierte SSL-Zertifikate, die nicht übergeben werden, wenn die CURLOPT_SSL_VERIFYPEER-Optionen festgelegt sind.

Es gibt zwei Lösungen:

  1. Kaufen Sie ein gültiges SSL-Zertifikat.
  2. Deaktivieren Sie die SSL-Überprüfung in Curl. ( add --insecure option )

Wenn Sie die Überprüfung deaktivieren, können Sie nicht sicher sein, ob Sie tatsächlich mit Ihrem Host kommunizieren. Es hängt also von der Sicherheitsstufe ab, die Sie benötigen.

    
Daniel Milde 29.12.2013, 13:18
quelle
2

Obwohl ich einen alten Beitrag beantworte, denke ich, dass er den neuen Zuschauern helfen wird -

Sie können das Problem überprüfen, indem Sie

hinzufügen %Vor%

Bei einem selbstsignierten Zertifikat kann Ihr Client eine Verbindung mit dem Server über die IP-Adresse herstellen, da der Hostname nicht im DNS-Cache verfügbar ist. In diesem Fall muss der COMMON NAME (CN) Ihres Serverzertifikats mit der Server-IP übereinstimmen (geben Sie die IP-Adresse als allgemeinen Namen an, wenn Sie das Serverzertifikat generieren). Wenn Sie es richtig machen, können Sie diese Nachricht sehen:

  

allgemeiner Name: 192.168.0.1 (übereinstimmend)

Hier ist 192.168.0.1 ein Beispiel.

    
rrsuj 08.03.2017 13:45
quelle
0

Sie haben Recht, SSL_VERIFYPEER zu aktivieren, wenn Sie sich Sorgen um Man-in-the-Middle-Angriffe machen.

Ist Ihre $path so eingestellt, dass sie auf das Zertifikat (oder Zertifikatspaket) verweist, das vom API-Besitzer bereitgestellt wird? Ist dieses Zertifikat vom Webserver-Benutzer lesbar? Wenn ja, haben Sie überprüft, ob das / die Zertifikat (e) identisch mit dem ist, wenn Sie die https-Adresse manuell in einem Browser aufrufen und das Zertifikat überprüfen?

Wenn Sie es nicht zum Laufen bringen können und die API, mit der Sie verbunden sind, ein SSL-Zertifikat hat, das in Ihrem normalen Browser ohne Warnungen funktioniert, sollten Sie $path auf Ihrem CA-Root-Bundle auf Ihrem Server setzen können .

    
Jhong 19.05.2014 04:10
quelle
0

Sie können ein gültiges SSL-Zertifikat erstellen und sicherstellen, dass es im vertrauenswürdigen Ordner gespeichert ist.

Ein gültiges SSL-Zertifikat kann erstellt werden, indem der folgende Befehl in die Entwicklerbefehlseingabe von VS2012 eingefügt wird. (Dies kann durch Eingabe von Entwickler am Anfang erreicht werden)

Der folgende Befehl erstellt ein selbstsigniertes Zertifikat, das zum Testen einer Webanwendung verwendet werden kann, die Secure Sockets Layer (SSL) auf einem Webserver mit der URL www.example.com verwendet. Die OID, die durch die Option -eku definiert wird, identifiziert dieses Zertifikat als SSL server certificate . Das Zertifikat wird im my store gespeichert und steht auf der Ebene des Computers (und nicht auf der Ebene des Benutzers) zur Verfügung. Der private Schlüssel des Zertifikats ist exportierbar und das Zertifikat ist gültig von May 10, 2010 through December 22, 2011 .

Makecert -r -pe -n CN="www.beispiel.com" -b 05/10/2010 -e 12/22/2011 -eku 1.3.6.1.5.5.7.3.1 -ss meine -sr localmachine -sky Exchange -sp "Microsoft RSA SChannel Kryptografie-Anbieter" -sy 12

Weitere Informationen zum Erstellen des SSL-Zertifikats

Stellen Sie jetzt sicher, dass dieses Zertifikat vertrauenswürdig ist. Dies kann durch Eingabe von CERTMGR in cmd. .. erfolgen.

Jetzt befindet sich das erstellte Zertifikat im PERSONAL-Ordner. Kopieren Sie es und fügen Sie es in den TRUSTED PEOPLE FOLDER ein.

Dies sollte den Trick machen. Lass es mich wissen, wenn das nicht funktioniert.

    
Abhishek 19.05.2014 13:04
quelle
0

Ich hatte das gleiche Problem. Ich folge den Anweisungen hier: Ссылка und es hat meinen behoben.

Grundsätzlich ging ich zu /etc/resolv.conf

und ersetzen Sie alle

OpenDNS-Server:

208.67.222.222

208.67.220.220

Mit

Googles öffentliche DNS-Server:

Nameserver 8.8.8.8 Nameserver 8.8.4.4

    
Andrew 06.09.2014 01:45
quelle
0

Neben CURLOPT_SSL_VERIFYPEER gibt es zwei weitere Einstellungen, die möglicherweise in false / 0 :

geändert werden %Vor%

Achten Sie darauf, dass Sie Ihre SSL-Zertifikate & amp; Einstellungen statt die Sicherheit zu deaktivieren!

    
waibelp 21.09.2017 09:50
quelle

Tags und Links