Question

J'ai besoin d'accéder à un site interne protégé via des certificats côté client.Par conséquent, pour utiliser phantomjs, j'ai exporté le certificat que j'utilise dans Firefox pour accéder au site et je l'ai converti en clé privée et certificat à l'aide de la ligne de commande openssl.J'ai maintenant quel phantomjs pour présenter ce certificat au serveur SSL lors de l'accès à une page sur le serveur.Comment fait-on ça?

J'ai essayé ça

phantomjs --ssl-certificates-path=/etc/pki  --ignore-ssl-errors=yes --proxy=myproxy:myport test.js

avec /etc/pki étant le chemin sur lequel j'ai mis le certificat et la clé

test.js c'est juste ça ;-

page = require('webpage').create()
page.open('https://myprotectedsite/', function(status) {
console.log(status);
phantom.exit();
})

Mais ça ne marche pas.console.log(status) est toujours « en échec »

Qu'est-ce que je dois faire?

Était-ce utile?

La solution

Je cherche aussi la décision.Ce n'est pas mis en œuvre https://github.com/ariya/phantomjs/issues/10524

"- SSL-Certificats-Chemin" - Il est utilisé pour le certificat CA

Autres conseils

La fonctionnalité sur laquelle il est implémenté est visible sur projet github, le fait est qu'il n'est pas déjà inclus dans la version stable actuelle (2.0.0), mais il est prévu de l'inclure sur version 2.0.1.En attendant, vous pouvez télécharger une version 2.0.1 depuis ici (le lien vient de la discussion git).

J'essaye d'utiliser 2.0.1 version et je peux accéder au site en passant correctement l'autorisation du client SSL avec la commande suivante :

Enfin nouveau PhantomJS 2.1 version a été publiée qui inclut cette fonctionnalité, vous pouvez la télécharger à partir de ici et testez l'autorisation du client SSL à l'aide de la commande suivante :

phantomjs --ssl-client-certificate-file=C:\tmp\clientcert.cer 
          --ssl-client-key-file=C:\tmp\clientcert.key 
          --ssl-client-key-passphrase=1111 
          --ignore-ssl-errors=true 
          C:\tmp\test.js

Remarques

Je teste cela uniquement sous Windows.

J'essaie d'utiliser un PKCS12 fichier en tant que magasin de clés mais il semble que ce format ne fonctionne pas, donc utiliser openssl J'extrais le certificat et la clé privée à l'aide des commandes suivantes :

Extraire le certificat pour --ssl-client-certificate-file paramètre

openssl pkcs12 -nokeys -clcerts -in a.p12 -out clientcert.cer

Extraire la clé pour --ssl-client-key-file paramètre

openssl pkcs12 -nocerts -in a.p12 -out clientcert.key

De plus j'utilise --ignore-ssl-errors=true pour éviter la configuration du trust store pour la validation du certificat du serveur.

Comme script j'utilise test.js qui contient la même chose a OP show sur la question :

page = require('webpage').create()
page.open('https://myproject', function(status) {
      page.render('C:/temp/connect.png');
      console.log(status);
      phantom.exit();
})

Le support de certificat client a en fait été mis en œuvre depuis la réponse acceptée originale.Je pose cela afin d'aider les autres qui vont également trébucher sur cette question.Vous pouvez trouver les paramètres permettant d'activer la prise en charge du certificat X509 / PKI dans Instructions CLI de Phantomjs :

phantomjs --ssl-certificates-path=/path/to/pki/rootCA.pem
          --ssl-client-certificate-file=/path/to/pki/cert.pem
          --ssl-client-key-file=/path/to/pki/cert.np.key

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top