Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #4305

Re: php/curl Verbindungsproblem

From Stefan Mayer <meniskus@gmx.net>
Newsgroups de.comp.lang.php
Subject Re: php/curl Verbindungsproblem
Date 2017-11-06 20:41 +0100
Message-ID <1924607834.20171106204146@gmx.net> (permalink)
References <74707732.20171105134853@gmx.net> <otn1v7$o90$1@solani.org>

Show all headers | View raw


Christoph M. Becker am Sonntag, 5. November 2017 (13:59):

> Am 05.11.2017 um 13:48 schrieb Stefan Mayer:

>> In der offiziellen Dokumentation gibt es folgenden Aufruf:
>> 
>> curl -vs \
>>      -u user:pass \
>>      -x https://api.test.sandbox.mobile.de:8080 \
>>      -H "Accept: application/vnd.de.mobile.api+json" \
>>      https://services.mobile.de/seller-api/sellers
>> 
>> Das Testscript sollte dem Aufruf entsprechen.
>> 
>> <?php
>> $ch = curl_init();
>> curl_setopt($ch, CURLOPT_VERBOSE, true);
>> curl_setopt($ch, CURLOPT_URL,
>>     'https://service.mobile.de/seller-api'
>> );

> Hm, die URI stimmt nicht überein.  Tippfehler nur in diesem Thread, oder
> im Script?

Der URI und die Angabe zu den HTTP-Kopfzeilen stimmen nicht.

Richtig ist: https://services.mobile.de/seller-api/[sellers]
                            ^
Ebenso die Notierung der HTTP Kopfzeilen.
Falsch:  ['Accept' => 'application/vnd.de.mobile.api+json']
Richtig: ['Accept: application/vnd.de.mobile.api+json']

Wie auch immer, beides kommt erst zu tragen, _wenn_ eine Verbindung steht.

# Das System auf dem der Client laufen soll ist Webspace bei Hetzner.

curl --version (x86_64-pc-linux-gnu) libcurl/7.38.0 OpenSSL/1.0.1t libssh2/1.4.3

Per curl oder (korrektem) script endet beides in:

Failed to connect to api.test.sandbox.mobile.de port 8080: Connection refused

$ openssl s_client -connect api.test.sandbox.mobile.de:8080 -ssl3
$ openssl s_client -connect api.test.sandbox.mobile.de:8080 -tls1_2

socket: Connection refused
connect:errno=111

Keine weitere Ausgabe.

Zum Vergleich:

$ openssl s_client -connect google.com:443 -tls1_2
Secure Renegotiation IS supported

$ openssl s_client -connect google.com:443 -ssl3
140365874095760:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:348:
Secure Renegotiation IS NOT supported

Zur Fehlermeldung war das https://access.redhat.com/solutions/56428 für mich am
Aussagekräfigsten.

TLS 1.2 wird unterstützt SSLv3 nicht. Der Sandkasten (proxy) von mobile
unterstützt beides nicht? Wieso wirft google den Fehler, die Sandbox aber nicht?


# Ein Testsystem in der lokalen VM, schon älter.

curl --version (x86_64-pc-linux-gnu) libcurl/7.38.0 OpenSSL/1.0.1t libssh2/1.4.3

Die curl/openssl Versionen sind gleich wie bei Hetzner?

$ openssl s_client -connect api.test.sandbox.mobile.de:8080 -ssl3
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:348:
Secure Renegotiation IS NOT supported

$ openssl s_client -connect api.test.sandbox.mobile.de:8080 -tls1_2
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:348:
Secure Renegotiation IS NOT supported

Allerdings, der direkte Aufruf per curl oder script verbindet wie folgt.

$ curl -vs ...
* Establish HTTP proxy tunnel to services.mobile.de:443
> CONNECT services.mobile.de:443 HTTP/1.1
< HTTP/1.1 200 Connection established
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / AES256-SHA
* Server certificate:
*  issuer: C=US; O=Symantec Corporation; OU=Symantec Trust Network; CN=Symantec Class 3 EV SSL CA - G3

"SSLv3" Handschlag vs. "connection using TLSv1.2"?

Welches Protokoll ist den nun für die Verbindung in ausgehandelt?

Also mein Testsystem akzeptiert SSLv3? Mit welchen Argumenten ruft curl dann openssl
auf, bzw. tut es das überhaupt?


# Es gibt noch ein Ubuntu

curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3

Dieses curl benutzt nicht OpenSSL. PHP gibt's da nicht, aber der curl Aufruf verbindet.

* Proxy replied OK to CONNECT request
* found 148 certificates in /etc/ssl/certs/ca-certificates.crt
* found 596 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / RSA_AES_256_CBC_SHA1

Im Gegensatz zum Testsystem sieht die Protokollierung anders aus, es gibt kein
Angaben zum Handshake und Kein "Server hello". Aber wieder "SSL connection using
TLS1.2".

# Ich arbeite auf Windows und per MinGW Umgebung:

curl 7.55.1 (x86_64-pc-msys) libcurl/7.55.1 OpenSSL/1.0.2l libssh2/1.8.0

* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

https://stackoverflow.com/questions/15166950/unable-to-establish-ssl-connection-how-do-i-fix-my-ssl-cert#answer-15168180

OK. Es wird versucht mit TLS 1.2 zu verbinden, aber der Server sendet kein
"Server hello" Kann der jetzt TLS 1.2 oder nicht?


Die alles entscheidende Frage lautet: Wieso verbindet der Server bei Hetzner
nicht? Meine Vermutung: Es ist das Fehlen der SSLv3 Unterstützung bei Hetzner.
Mein Testumgebung, weil nicht so gut gepflegt, akzeptiert das. MinGW ist neuer
und unterstützt ebenfalls kein SSLv3.

Nur, was hat dann "SSL connection using TLSv1.2" zu bedeuten?
Was hat der SSLv3 Handshake mit anschließendem "using TLSv1.2" zu bedeuten?
Wie bekomme ich raus, welches Protokoll den nun verlangt, bzw. welches Angeboten wird.
Wie bekomme ich raus welche Protokolle von meinen Rechnern akzeptiert werden.
Welche Komponente ist den jetzt letztlich dafür zuständig?
[...]

Wie ich es geschrieben habe, mir fehlt das grundsätzliche Verständnis, um die
Beobachtungen zu überhaupt zu deuten. Was zur Folge hat, dass ich nicht weiß
welche Informationen ich überhaupt, womit und wo suchen sollte um mir den
Sachverhalt zu erschließen.

Ich muss mich wohl damit zufrieden geben, dass meine Vermutung zur Ursache
vielleicht richtig ist und die Produktiv-Umgebung bei mobile.de wahrscheinlich
schon "funktionieren" wird.


Schönen Tag noch.
ciao, Stefan




Back to de.comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

php/curl Verbindungsproblem Stefan Mayer <meniskus@gmx.net> - 2017-11-05 13:48 +0100
  Re: php/curl Verbindungsproblem "Christoph M. Becker" <cmbecker69@arcor.de> - 2017-11-05 13:59 +0100
    Re: php/curl Verbindungsproblem Stefan Mayer <meniskus@gmx.net> - 2017-11-06 20:41 +0100
      Re: php/curl Verbindungsproblem Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-11-07 17:54 +0100
        Re: php/curl Verbindungsproblem Stefan Mayer <meniskus@gmx.net> - 2017-11-10 00:27 +0100
          Re: php/curl Verbindungsproblem Tom <weiksch@gmail.com> - 2018-10-06 08:26 -0700
  Re: php/curl Verbindungsproblem Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-11-05 20:26 +0100

csiph-web