XML ophalen via SSL met libxml weigert

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Ariën  -
Beheerder

- Ariën -

09/05/2017 12:28:23
Quote Anchor link
Om een XML-feed op te halen van een bepaalde site, gebruik ik deze code. Echter, de website is sinds kort overgeschakeld op SSL, en sindsdien krijg ik het script niet meer aan de praat.

Ik krijg vanuit cURL steeds de melding:
Peer's Certificate issuer is not recognized.

Wat moet ik nu doen? Ik heb al gekeken naar CURLOPT_SSL_VERIFYPEER op 0, maar lijkt ook geen soelaas te bieden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
        curl_setopt($ch, CURLOPT_VERIFYPEER, 0);

Vreemd genoeg krijg ik dit terug? Terwijl het toch echt een constante is. Dat kent hij blijkbaar hier niet :/
Notice: Use of undefined constant CURLOPT_VERIFYPEER - assumed 'CURLOPT_VERIFYPEER' in

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$username
= "secret";
$password = "topsecret";
$url = "https://www.site.nl/api/feed.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
$result = curl_exec($ch);
$xml = simplexml_load_string($result,NULL, LIBXML_NOCDATA);
    if(!$xml) {
        echo "<p>Feed is stuk:  ".curl_error($ch)."</p>";
    }
else {
        // doe de rest
    }
curl_close($ch);
?>
Gewijzigd op 09/05/2017 12:36:48 door - Ariën -
 
PHP hulp

PHP hulp

28/03/2024 21:28:29
 
Veur Heur

Veur Heur

09/05/2017 12:32:52
Quote Anchor link
Lama, zie dat je eerst in moet loggen.
Gewijzigd op 09/05/2017 12:33:29 door Veur Heur
 
- Ariën  -
Beheerder

- Ariën -

09/05/2017 12:35:24
Quote Anchor link
Dat inloggen heeft altijd gewerkt. Nadat het boeltje op SSL over ging werkte het script niet meer.
Gewijzigd op 09/05/2017 12:36:09 door - Ariën -
 
Veur Heur

Veur Heur

09/05/2017 12:37:00
 
- Ariën  -
Beheerder

- Ariën -

09/05/2017 12:39:38
Quote Anchor link
Held \o/

Dit was de fix!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 
- SanThe -

- SanThe -

09/05/2017 12:40:54
Quote Anchor link
Is het niet CURLOPT_SSL_VERIFYPEER?

http://php.net/manual/en/function.curl-setopt.php
 
- Ariën  -
Beheerder

- Ariën -

09/05/2017 12:46:08
Quote Anchor link
Ja, klopt. Blijkbaar lopen de parameters van cURL zelf niet gelijk met die van PHP. Of ik keek in een gedateerde manual. Maar het is opgelost. :-)

Wel bizar dat ik deze setting nodig heb gezien het certificaat verder prima oogt?
 
Veur Heur

Veur Heur

09/05/2017 12:49:21
Quote Anchor link
Bij "wget" heb je vaak hetzelfde, daar kun je de check op het certificaat ook beter uitschakelen om fouten te voorkomen.
 
Ben van Velzen

Ben van Velzen

09/05/2017 13:18:27
Quote Anchor link
Of je installeert de ca certificates, dat lost ook een hoop op.
 
- Ariën  -
Beheerder

- Ariën -

09/05/2017 13:43:21
Quote Anchor link
Dat zou ook een goed idee zijn. Eens in verdiepen!
 
Thomas van den Heuvel

Thomas van den Heuvel

09/05/2017 14:57:14
Quote Anchor link
Opolo Webdesign op 09/05/2017 12:49:21:
Bij "wget" heb je vaak hetzelfde, daar kun je de check op het certificaat ook beter uitschakelen om fouten te voorkomen.

Gooi je daarmee niet het kind met het waswater weg?

Min of meer wat @Ben zei. 1 minuut googlen (oud artikel, maar nog steeds relevant, en illustreert waarom je dit niet uit zou moeten zetten).
Gewijzigd op 09/05/2017 15:00:05 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

09/05/2017 15:13:32
Quote Anchor link
het ligt wel een beetje aan de situatie, Thomas. Maar infeite is een certificaat altijd het beste.
 
Thomas van den Heuvel

Thomas van den Heuvel

09/05/2017 15:27:49
Quote Anchor link
De situatie zijnde wat? Hoeveel tijd je aan een klus mag spenderen? Hoe erg het is wanneer je applicatie niet veilig is? Hoe lui iemand zich op dat moment voelt en maar bochten afsnijdt in plaats van zijn/haar werk fatsoenlijk te doen? Hoe professioneel een programmeur daadwerkelijk is of hoeveel verstand van zaken iemand eigenlijk heeft?

Zijn er voorbeelden waarin certificaten niet werken? En wat is daar dan de oorzaak van?

Als je niet kunt rechtvaardigen om CURLOPT_SSL_VERIFYPEER niet te gebruiken dan zou je dat niet moeten doen.

- Ariën - op 09/05/2017 13:43:21:
Dat zou ook een goed idee zijn. Eens in verdiepen!

Dat lijkt mij een stap in de goede richting.
 
- Ariën  -
Beheerder

- Ariën -

09/05/2017 15:37:20
Quote Anchor link
Het licht eraan wat er over de lijn gaat. In deze situatie zie ik dit even als een quick-fix. Als het gevoelige informatie was had ik het wel ingrijpender aangepakt, maar een paar treintijden uit een API, dat kan geen kwaad als iemand het zou sniffen. Bij een volgende update zal het wel goedkomen.
 
Thomas van den Heuvel

Thomas van den Heuvel

09/05/2017 15:47:02
Quote Anchor link
- Ariën - op 09/05/2017 12:39:38:
Held \o/

Dit was de fix!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Misschien wil je dit antwoord nog wat nuanceren dan, voor het geval andere mensen zoeken naar een oplossing en niet verder kijken dan deze "oplossing".
 
- Ariën  -
Beheerder

- Ariën -

09/05/2017 15:58:04
Quote Anchor link
Daar heb jij al een link over geplaatst met een oplossing. ;-)
Ik ga niet graag zomaar zonder het uitgeprobeerd te hebben beschrijven hoe het wel moet.
Gewijzigd op 09/05/2017 15:59:04 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

09/05/2017 18:02:56
Quote Anchor link
- Ariën - op 09/05/2017 15:58:04:
Ik ga niet graag zomaar zonder het uitgeprobeerd te hebben beschrijven hoe het wel moet.

Maar je zou wel kunnen aangeven dat het uitzetten van een identiteitscheck nou niet bepaald verstandig is. Het hele idee van HTTPS / SSL is toch dat je in een veilige omgeving informatie uitwisselt? Een controle of je dat ook daadwerkelijk met de juiste partij doet lijkt mij daar onderdeel van. HOE je dat vervolgens doet is een tweede.

Het gaat hier (wederom) meer over de vorm van het advies die leidt tot een oplossing en niet zozeer over de (of een specifieke) oplossing zelf. Je moet kunnen onderbouwen waarom je de dingen doet die je doet. Heb je in jouw geval niet direct deze controle nodig, soit. Dit blijkt niet uit je oorspronkelijke vraagstelling. Lijkt me wel een kanttekening waard.
 
- Ariën  -
Beheerder

- Ariën -

09/05/2017 18:16:53
Quote Anchor link
Inmiddels ben ik me daar wel van bewust, een zal het asap doorvoeren :)
Gewijzigd op 09/05/2017 18:17:50 door - Ariën -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.