Je voudrais partager avec vous aujourd'hui, une petite astuce proposée par David Walsh qui vient de me faire gagner pas mal de temps.
Je suis en train d'exploiter l'API TypePad pour créer un outil d'envoi de fichier en masse sur les serveurs de la plateforme. Si la connexion via OAuth se passe très bien en mode non sécurisé (suffisant pour lire de l'information), je n'arrivais pas à me connecter en utilisant le mode sécurisé (https). J'avais systématiquement une erreur liée à CURL et SSL.
Ce qu'il faut savoir, c'est que cURL ne peut pas utiliser nativement le protocole https, si on ne lui précise pas quel est le certificat avec lequel il doit comparer celui fournit par le serveur distant.
J'ai donc étendu un tout petit peu l'une des classes PHP permettant d'exploiter l'API TypePad, en l'occurence le fichier TypePad.php, à la ligne 145, dans la fonction setCurlopts :
else {
$request->setCurlopts(array(
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => getcwd() . "/Certs/cacert.pem"
));
}
Le fichier de certification est celui que j'avais téléchargé depuis https://api.typepad.com, comme expliqué ici. Le problème est que je me suis retrouvé confronté à un certificat qui n'était plus valide. L'erreur retournée était la suivante :
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
La solution m'a alors été aportée par David Walsh, qui fournit un précieux lien pointant vers le fichier de certification utilisé par Mozilla pour permettre à son navigateur d'accéder aux principaux sites exploitant le protocole https, ce fichier étant régulièrement mis à jour !
Partant de là, vous devriez être en mesure de vous connecter sans problème en https à TypePad, et de mettre en place un système d'authentification via OAuth.