2013-09-25 3 views
5

Мне нужно указать сертификат с CURL, который я попробовал с опцией --cert, он не работает.CURL, чтобы пройти SSL certifcate и пароль

Не могли бы вы сообщить мне, чтобы указать хранилище ключей и пробную паузу, когда вы вызываете завиток?

ответ

12

Должно быть:

curl --cert certificate_file.pem:password https://www.example.com/some_protected_page 
+3

Могу ли я указать файл JKS с этой опцией? – Adam

+0

Вы не можете использовать cURL с ** Java ** KeyStore.Вот хороший SO-ответ, который детализирует его: http://stackoverflow.com/q/652916/971423 – Welsh

3

Дополнение к предыдущему ответу убедитесь, что ваш локон установка поддерживает протокол HTTPS.
Вы можете использовать curl --version для получения информации о поддерживаемых протоколах.

Если ваш завиток поддерживает https, следуйте предыдущему ответу.

локон --cert certificate_path: пароль https://www.example.com

Если он не поддерживает протокол HTTPS, необходимо установить завиток версию, которая поддерживает протокол HTTPS.

0

Я прошел через это, пытаясь получить клиентский ключ и закрытый ключ из хранилища ключей.

Ссылка, размещенная на welsh, была большой, но был добавлен дополнительный шаг в моем распределении redhat. Если curl построен с помощью NSS (запустите curl --version, чтобы увидеть, видите ли вы NSS), вам необходимо импортировать ключи в хранилище ключей NSS. Я прошел через кучу запутанных шагов, так что это не может быть чистым способом, но есть вещи, работающие

Так экспортировать ключи в .p12

keytool -importkeystore -srckeystore $jksfile -destkeystore $p12file \ 
     -srcstoretype JKS -deststoretype PKCS12 \ 
     -srcstorepass $jkspassword -deststorepass $p12password 
     -srcalias $myalias -destalias $myalias \ 
     -srckeypass $keypass -destkeypass $keypass -noprompt 

И создать файл PEM который содержит только ключ

echo making ${fileroot}.key.pem 
openssl pkcs12 -in $p12 -out ${fileroot}.key.pem \ 
     -passin pass:$p12password \ 
     -passout pass:$p12password -nocerts 
  • сделать пустой хранилище ключей:
mkdir ~/nss 
chmod 700 ~/nss 
certutil -N -d ~/nss 
  • Импорт ключей в хранилище ключей
pks12util -i <mykeys>.p12 -d ~/nss -W <password for cert > 

Теперь локон должен работать.

curl --insecure --cert <client cert alias>:<password for cert> \ 
    --key ${fileroot}.key.pem <URL> 

Как я уже говорил, могут быть и другие способы сделать это, но, по крайней мере, это было повторяемые для меня. Если curl скомпилирован с поддержкой NSS, я не смог заставить его вытащить сертификат клиента из файла.