Certificat SSL / web service

Invité
Invité n'ayant pas de compte PHPfrance

03 juin 2009, 12:46

Bonjour,

Je dois me connecter à un web service, enfin, envoyer des données en GET (XML concaténé) pour obtenir une réponse XML. Seulement, le serveur est protegé via un certificat pour authentification SSL...
J'ai le fichier .p12 qui a été transformé en .pem, seulement là je suis paumé. Je peux ajouter ce .p12 aux certificats windows (IE) pour le faire tourner, mais je voudrais que lors d'un clic, ça envoie les données et retourne le résultat sans devoir insérer la certificat côté client.

J'ai vu plusieurs solutions mais aucune collant à mon utilisation. En résumé, je dispose d'une passphrase, d'un clef .p12 ou .pem, et d'une url ou il faut passer des variables en post. Avez-vous une idée de comment faire ?

Eléphant du PHP | 94 Messages

03 juin 2009, 14:17

J'ai jamais essayé, mais apparemment c'est possible avec openssl et curl.
Du moins c'est ce que je comprends en lisant cet article
Pour pouvoir utiliser le protocole SSL, vous devez posseder 3 fichiers :

un fichier de clé privée (xxx.key)

un fichier de certificat (xxx.crt)

un fichier de chaine de certification (chain.crt)

Apres avoir importe votre certificat, vous avez en votre possession un fichier au format PKCS12 (protege par mot de passe), qui contient le certificat et la cle privee.

Pour pouvoir récupérer chaque élément séparement, veuillez lancer les commandes suivantes à l'aide de l'outil openssl. Pour chaque commande, openssl vous demandera le mot de passe utilisé pour protéger le fichier PKCS12.

Pour le certificat : openssl pkcs12 -in nomfichier.p12 -out xxx.crt -nokeys

Pour la clé privée : openssl pkcs12 -in nomfichier.p12 -out xxx.key -nocerts

Openssl vous demandera en plus un nouveau mot de passe à utiliser pour protéger votre fichier de clé privée.

Enfin le fichier de chaîne pourra être récupéré en lançant la commande suivante a l'aide de l'outil curl :

curl http://www.certigna.fr/ca/ACcertigna{ssl,}.crt > chain.crt
Source : ici (en bas)

Invité
Invité n'ayant pas de compte PHPfrance

04 juin 2009, 09:37

Merci pour la réponse :) Ca a fonctionné !
Donc en résumé, utilisation de openssl pour générer certificat et clef, et curl pour les utiliser lors de l'appel d'url.