Curl ist bei einer https-Anfrage erfolgreich, wget nicht

9

Wenn ich curlvon der Kommandozeile aus laufe

curl "https://example.com"

Es ist sofort erfolgreich und gibt das Ergebnis der Anforderung zurück.

Wenn ich den gleichen wget-Befehl ausführe

wget https://example.com

Es tritt schließlich eine Zeitüberschreitung mit "SSL-Verbindung kann nicht hergestellt werden" auf. ohne spezifische Fehlermeldung. Es stellt eine Verbindung her, kann jedoch den SSL-Handshake nicht ausführen. Ich habe es versucht, --no-check-certificateaber das machte keinen Unterschied - es scheint mit dem Timeout zu tun zu haben.

Jedoch:

wget http://example.com

funktioniert gut (HTTP vs HTTPS).

Dies wirkt sich auch auf den Methodenaufruf " file()" des PHP aus .

Meine Frage ist, was würde dazu führen, dass Curl erfolgreich eine Seite abruft (für alle Websites in unserer Domain), aber nicht wget oder den PHP-Interpreter? Dies ist ein neues Problem über das Wochenende, der Server war vorher in Ordnung.

(Betriebssystem ist Red Hat Enterprise Linux 6.4)

Resorath
quelle

Antworten:

6

Dies scheint ein Problem bei der Auswahl des SSL-Protokolls zu sein. Aus irgendeinem Grund ist der Server hinsichtlich des Protokolls wählerisch. Einige Kunden machen die richtige Vermutung, andere nicht.

Mit wgetversuchen Sie zB. --secure-protocol=tlsv1oder --secure-protocol=sslv3. Weitere Informationen finden Sie auf der Manpage zu GNU Wget .

Siehe mit PHP diese Frage auf SO .

Tuomassalo
quelle
Ich habe gestern SSLv3 wegen eines Sicherheitsproblems mit SSL deaktiviert und heute Morgen wurden nicht alle Cron-Jobs gestartet ( Unable to establish SSL connection). Die Lösung bestand darin --secure-protocol=tlsv1_2, den wgetBefehl zu ergänzen . Vielen Dank.
David Bélanger
4

Auf Red Hat Enterprise Linux 6.x und vor großen Versionen, wgetbietet keine Unterstützung für Server Name Indication , die korrekt eine wachsende Anzahl von TLS / SSL - gesicherten Websites zugreifen erforderlich ist, möglicherweise einschließlich Ihnen. Auf der anderen Seite unterstützt curlRHEL 6 SNI.

Red Hat ist sich dieses Problems bewusst und hat einen Fix in RHEL 6.6 veröffentlicht . Das Problem wurde auch in RHEL 7.0 behoben.

Michael Hampton
quelle
0

Auf den ersten Blick macht dies sicherlich nicht viel Sinn. Der erste Schritt besteht darin, zu bestätigen, dass wget überhaupt für ssl funktioniert (können Sie andere ssl-Sites mit wget aufrufen?).

Wenn nicht: Verfolge es als Wget-Problem

(Beachten Sie, wenn Sie vier verschiedene SSL-Sites w wget ausprobieren und zwei davon kaputt gehen, ist dies immer noch ein Wget-Problem.)

Eine weitere Diagnose: Was macht ein Browser mit der https-URL? (Chrom und Fuchs) - geben sie Warnungen oder verbinden sie sich sauber?

Jonesome stellt Monica wieder her
quelle
-1

wget spätestens (1.15) auf Centos 6.5

Ich musste wget 1.15 kompilieren und dann yum's wget ersetzen

wget http://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz
tar -zxvf wget-1.15.tar.gz
cd wget-1.15
./configure --prefix=/usr/local/bin --with-ssl=openssl
# replace wget, confirm
cp /usr/local/bin/wget /usr/bin/wget
Victor Loureiro
quelle