cURL PHP Richtige SSL-zwischen privat-Server mit einem selbst-signierten Zertifikat
Ursprünglich hatte ich eine Verbindung zwischen meinen 2 Servern, die mit setzen von curlopt_ssl_verifypeer auf "false" gesetzt, mit dem Gemeinsamen Namen im SSL-Zertifikat Fehler zu vermeiden. Im folgenden wird der client-code, der mit dem server verbunden, mit dem Zertifikat:
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);
Allerdings habe ich vor kurzem geändert, dieser code (setzen Sie ihn auf true) und angegeben das Computer-Zertifikat im PEM-format.
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);
curl_setopt($ch,CURLOPT_CAINFO,getcwd().'/includes/hostcert/Hostname.crt');
Dieser funktioniert großartig auf das lokale Netzwerk von einer test-Maschine, als das Zertifikat mit dem Hostnamen für eine CN. Wie kann ich setup den PHP-code, so dass es nur vertraut der hostname computer und unterhält eine sichere Verbindung.
Ich bin mir wohl bewusst, Sie können nur festlegen, CURLOPT_SSL_VERIFYHOST auf "0" oder "1" und setzen von curlopt_ssl_verifypeer auf "false", diese sind aber nicht gültig-Lösungen, wie Sie brechen die SSL-Sicherheit.
Meine /etc/hosts Datei ist wie folgt:
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost ExampleHostName
::1 localhost.localdomain localhost
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie generieren Sie ein Zertifikat mit einem gültigen host-Namen, wie die vom client angefordert. Wenn Sie verwendet haben
machine.local
für Ihre interne name, aber die wollen jetzt für die Verwendung von externen clients ruft es übermachine.example.org
, dann müssen Sie das Zertifikat, das Sie verwenden, um gültig zu sein fürmachine.example.org
.Wenn Sie (da der gleichen Maschine kann aufgerufen werden mit unterschiedlichen host-Namen), den Subject Alternative Name-Erweiterung und legen Sie mehrere DNS-Einträge in Ihrem Zertifikat.