PHP Soap pem key hiba

Címkék
PHP Soap pem key hiba
2022-07-30T20:49:30+02:00
2022-08-03T11:20:36+02:00
2022-08-03T11:40:27+02:00
pch
Üdv!

Kaptam egy pem file-t amivel elvileg menne egy soap lekérdezés. 
Elakadtam ott, hogy bárhogy adom be neki a pem filet hibára fut.
Jelenleg így van:

ini_set('soap.wsdl_cache', '0'); $soap_url="https://xxxxxx.hu/xxx/xxxxService?wsdl"; $publicKey = '../../xxxxx.pem'; $password = "xxxxx"; print_r($publicKey); $params = [ 'local_cert' => $publicKey, 'passphrase' => $password, 'trace' => 1, 'exceptions' => 0 ]; $webService = new SOAPClient($soap_url,$params);
A hiba:
Warning: SoapClient::SoapClient(): SSL: Connection reset by peer

Próbáltam file_get_contnets beolvasni, akkor is ugyanez a hiba jött elő.

Mi lehet még a gond?
Mutasd a teljes hozzászólást!

  • Bármi. Kezdd az elején, próbáld ki wget-tel:

    wget https://xxxxxx.hu/xxx/xxxxService?wsdl
    Mutasd a teljes hozzászólást!
  • Mi lehet még a gond?

    Én a SoapClient manualban nem látok olyan paramétereket amit használni kívánsz. Én valószínű a stream_context_create() funkcióval előre definiálnám milyen verziójú SSL-t szeretnék használni, ugyanitt adnám meg a certificate-em is.  Lásd itt: PHP: SSL context options - Manual

    Ha ez megvan, akkor a context már mehet a SoapClient-nek mint paraméter.
    Mutasd a teljes hozzászólást!
  • Nos:
    wget:

    wget --private-key=xxx.pem --private-key-type=PEM --no-check-certificate https://xxx.hu/xxx/xxxService?wsdl HTTP kérés elküldve, várakozás válaszra… GnuTLS: Error in the pull function. Olvasási hiba (Error in the pull function.) a fejlécekben. Újrapróbálkozás.
    Megnéztem a stema_context_reate()-t, az alapján is megpróbáltam.

    $soap_url="https://xxx.xxx.hu/xxx/xxxService?wsdl"; $publicKey = file_get_contents('xxx.pem'); $contextOptions = array( 'ssl' => array( 'local_cert' => $publicKey, 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, 'verify_depth' => 0 ) ); $sslContext = stream_context_create($contextOptions); $result = file_get_contents($soap_url, NULL, $sslContext);
    Hiba:
    Warning: file_get_contents(): SSL: Connection reset by peer
    Mutasd a teljes hozzászólást!
  • Nincs elég bajod, még magyarított wget-ed is van :(
    Próbáld így:

    LC_ALL=C wget -d https://xxx.hu/xxx/xxxService?wsdl
    A pem-fájlodat még ne keverd bele, mivel egyelőre egyikünk sem tudja, hogy mi is van benne.
    (Kezdetnek megpróbálhatod a grep -- -- fileneve.pem parancsot.
    Mutasd a teljes hozzászólást!
  • LC_ALL=C wget -d https://xxx.xxx.hu/xxx/xxxService?wsdl DEBUG output created by Wget 1.21.3 on linux-gnu. Reading HSTS entries from /home/pch/.wget-hsts URI encoding = 'ANSI_X3.4-1968' converted 'https://xxx.xxx.hu/xxx/xxxService?wsdl' (ANSI_X3.4-1968) -> 'https://xxx.xxx.hu/xxx/xxxService?wsdl' (UTF-8) Converted file name 'xxxService?wsdl' (UTF-8) -> 'xxxService?wsdl' (ANSI_X3.4-1968) --2022-07-31 19:40:29-- https://xxx.xxx.hu/xxx/xxxService?wsdl Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt' Certificates loaded: 301 Resolving xxx.xxx.hu (xxx.xxx.hu)... xx.xxx.xx.xx Caching xxx.xxx.hu => xxx.xxx.xx.xx Connecting to xxx.xxx.hu (xxx.xxx.hu)|xx.xxx.xx.xx|:443... connected. Created socket 3. Releasing 0x000055d3ad7073e0 (new refcount 1). ---request begin--- GET /xxx/xxxeService?wsdl HTTP/1.1 Host: xxx.xxx.hu User-Agent: Wget/1.21.3 Accept: */* Accept-Encoding: identity Connection: Keep-Alive ---request end--- HTTP request sent, awaiting response... GnuTLS: *** REHANDSHAKE while reading GnuTLS: Error in the pull function. Read error (Error in the pull function.) in headers. Retrying. --2022-07-31 19:40:30-- (try: 2) https://xxx.xxx.hu/xxx/xxxService?wsdl Found xxx.xxx.hu in host_name_addresses_map (0x55d3ad7073e0) Connecting to xxx.xxx.hu (xxx.xxx.hu)|xx.xxx.xx.xx|:443... connected. Created socket 3. Releasing 0x000055d3ad7073e0 (new refcount 1). ---request begin--- GET /xxx/xxxService?wsdl HTTP/1.1 Host: xxx.xxx.hu User-Agent: Wget/1.21.3 Accept: */* Accept-Encoding: identity Connection: Keep-Alive ---request end--- HTTP request sent, awaiting response... GnuTLS: *** REHANDSHAKE while reading GnuTLS: Error in the pull function. Read error (Error in the pull function.) in headers. Retrying.
    Ezt adta a wget
    Mutasd a teljes hozzászólást!
  • (Fontos ennyire titkolózni? Nem áruljuk el a szüleidnek, hogy az eeszt-vel akarsz kapcsolatba lépni.)
    Mutasd a teljes hozzászólást!
  • Nem eeszt. 
    Cetelem lenne.
    Mutasd a teljes hozzászólást!
  • Példaképp mondjuk van egy ilyen:

    https://ecom2demo.cetelem.hu/ecommerce/EcommerceService?wsdl

    Ez így wget-tel megszólítva nem különösebben mond semmit, csak bontja a kapcsolatot; arra sem tesz célzást, hogy kliensoldali certificate-et akar látni, de ha gondolod, hogy a fájl, amit kaptál, egy jó certificate+privatekey párost tartalmaz, akkor megpróbálhatod így:

    wget --certificate=fileodneve.pem https://ecom2demo.cetelem.hu/ecommerce/EcommerceService?wsdl
    Mutasd a teljes hozzászólást!
  • Nos a megvan a megoldás.
    Nem akarom bántani őket de a specifikációjuk se jó és a kommunikációjuk se az igazi.
    Elég nehéz úgy fejleszteni, hogy elhallgatnak információkat.
    Jó volt az első megközelítésem:

    ini_set('soap.wsdl_cache', '0'); $soap_url="https://xxxxxx.hu/xxx/xxxxService?wsdl"; $publicKey = '../../xxxxx.pem'; $password = "xxxxx"; $params = [ 'local_cert' => $publicKey, 'passphrase' => $password, 'trace' => 1, 'exceptions' => 0 ]; $webService = new SOAPClient($soap_url,$params);
    információk a később idetévedőknek:
    A password: 
    Ide azt kell megadni amivel generáltad a csr fájlt amit el kell juttatni nekik.
    cert:
    Amikor csináltad a csr-t kaptál egy key-fájlt is.
    Ezt átalakítod pem-é és egybefűzöd a kapott pem fájlal.

    cat a_te_private_key > te_private_pem cat a_kapott_pem >> te_private_pem
    Az így kapott pem már jó lesz a kommunikációba.
    Mutasd a teljes hozzászólást!
  • Kicsit pontosítva:
    Password: ha a privátkulcs jelszóvédett (nem kötelező, lásd a -nodes opciót), akkor itt kell megadni a jelszót.
    Mutasd a teljes hozzászólást!
Címkék
abcd