каков правильный способ подачи ssl-сертификата в phantomjs

мне нужно получить доступ к внутреннему сайту, защищенному сертификатами на стороне клиента. Поэтому для использования phantomjs я экспортировал сертификат, который я использую в Firefox для доступа к сайту, и преобразовал его в закрытый ключ и сертификат с помощью командной строки openssl. Я теперь, что phantomjs представить этот сертификат на сервер ssl при доступе к странице на сервере. Как мне это сделать?

Я пробовал это

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

С /etc/pki-это путь, по которому я поместил сертификат и ключ

3 ответов


Я тоже ищу решение. он не реализован https://github.com/ariya/phantomjs/issues/10524

"-- ssl-certificates-path " - используется для сертификата CA


функция реализована вы можете увидеть на проект github, дело в том, что он еще не включен в фактический стабильный релиз (2.0.0), однако его планируется включить в 2.0.1 версия. Тем временем вы можете скачать 2.0.1 build из здесь (ссылка из обсуждения git).

Я пытаюсь использовать 2.0.1 версия, и я могу получить доступ к сайту, правильно пройдя авторизацию клиента SSL с помощью выполните команду:

наконец-то новая PhantomJS 2.1 версия была выпущена, которая включает в себя эту функцию, вы можете скачать с здесь и проверьте авторизацию клиента SSL, используя следующую команду:

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

Примечания

Я тестирую это только в Windows.

Я пытаюсь использовать PKCS12 файл как хранилище ключей, но кажется, что с этим форматом не работает, поэтому использование openssl я извлекаю сертификат и закрытый ключ, используя следуйте командам:

экстракт CERT на --ssl-client-certificate-file параметр

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

извлечь ключ для --ssl-client-key-file параметр

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

дополнительно я использую --ignore-ssl-errors=true чтобы избежать настройки хранилища доверия для проверки сертификата сервера.

в качестве скрипта я использую


поддержка сертификата клиента фактически была реализована с момента первоначального принятого ответа. Я публикую это, чтобы помочь другим, кто также наткнется на этот вопрос. Вы можете найти параметры для включения поддержки сертификатов X509/PKI в инструкции CLI 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