Bonjour.
Je dois faire appel à un webservice Rest en php.
Pour me connecter au webservice j'ai besoin d'un certificat ssl. Je dispose comme certificat d'un fichier pfx avec un mot de passe.
Après quelques recherches, je l'ai décomposé en deux fichiers .pem (un fichier clé et un fichier certificat) via openssl comme ceci :
Ensuite pour appeler mon webservice je passe par curl comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 pkcs12 -in monfichier.pfx -out moncertificat.pem -clcerts -nokeys -passin 'pass:monmotdepasse' pkcs12 -in monfichier.pfx -out macle.pem -nocerts -nodes -passin 'pass:monmotdepasse'
Et j'optiens toujours l'erreur suivante : SSL certificate problem: self signed certificate in certificate chain
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $url = "url_du_webervice"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSLCERT,"path/to/moncertificat.pem"); curl_setopt($ch, CURLOPT_SSLCERTPASSWD,"monmotdepasse"); curl_setopt($ch, CURLOPT_SSLKEY,"path/to/macle.pem"); $response = curl_exec($ch); if($response === false) { var_dump(curl_error($ch)); } else { var_dump($response); } curl_close($ch);
J'ai vu sur ce lien : https://www.pixelstech.net/article/1...tificate-chain qu'on pouvait télécharger un certificat sur http://curl.haxx.se/ca/cacert.pem.
Du coup une fois ce fichier téléchargé, je réécris le code d'appel suivant pour mon ws
Et là cela fonctionne j'ai bien un retour correct de la page.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $url = "url_du_webervice"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CAINFO,EA_PATH."/path/to/cacert.pem"); $response = curl_exec($ch); if($response === false) { var_dump(curl_error($ch)); } else { var_dump($response); } curl_close($ch);
Du coup j'ai du mal à comprendre, je n'ai pas besoin du certificat pfx qui m'a été fourni au final ? En quoi c'est mieux d'utiliser ce fichier cacert.pem
Merci d'avance pour votre aide.
Partager