Curl и сертификаты

Статус
В этой теме нельзя размещать новые ответы.

Димон

Новичок
Curl и сертификаты

Приветствую всех!

Парюсь над одной проблемой. Есть сайт с которым мне нужно построить автоматизированную систему запросов. Сайт использует https-протокол.
При обращении к сайту он посылает сертификат, удостоверящий "личность" сервера (сайта) и ставит сессионную куку. Дальше можно залогиниться и начать работу с ресурсом.
Получаемый сертификат имеет только открытый ключ.

Теперь, те же шаги я воспроизвожу через curl (предварительно экспортирую сертификат в формате PEM (для curl) в файл my.crt).

Но авторизоваться не получается. Пишет ошибку curl: unable to set private key file.

Т.е. нужен закрытый ключ, которого у меня нет, и который не предоставляется самим сайтом. Это значит, что шифруются только исходящие сообщения, а расшифровываются только на сервере с помощью закрытого ключа.

Опции сертификатов curl, которые я указываю:
CURLOPT_SSL_VERIFYPEER 0 // отключаю проверку соответствия сертификата доверенным сертификационным центрам (т.к. сертификат подписан другим серт.центром)
CURLOPT_SSLCERT my.crt

Перегуглил уже пол интернета и походу дело в том, что curl не отправляет запрос без наличия закрытого ключа. Но ключа нет. Если, блин, браузер отправляет запрос, значит и курл должен это уметь сделать!

Может кто сталкивался с такой фигней?

-~{}~ 29.12.09 14:00:

Ну и заипца в курлу подсунули. Смотрю сорсы либы и там:

if(SSL_CTX_use_PrivateKey_file(ctx, key_file, file_type) != 1) {
failf(data, "unable to set private key file: '%s' type %s",
key_file, key_type?key_type:"PEM");

Значит предположение было верным. Теперь надо искать, как это добро "по-хорошему" отключить.

-~{}~ 31.12.09 16:13:

Епты!!! Я наипал этот курл! Сорри за эмоции, но я убил на это туеву хучу времени, тщетно обшарил пол-интернета в поисках ответа, на ипонском и китайском, наверное, только не читал страницы.. Проблема редкая, но не единичная. Но решения так никто, почему-то и не предложил. Походу забили все просто.

Короче, сделал так:

Используя тулзу "OpenSSL" вытащил из сертификата публичный (открытый) ключ. С помощью этого ключа и openssl зашифровал данные, которые должны поститься на сервер. Далее для fsockopen сформировал строку пост-запроса с заголовками и зашифрованной строкой данных. Отправил все это добро и получил долгожданный ответ, о том что авторизация прошла успешно!

Я пошел пить и отмечать новый год :) Как оклемаюсь после праздников и оформлю все это в виде нормального, юзабельного класса, то выложу на форум.

Всех с наступающим!

П.С. Много не пейте, позы меняйте :)))
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
твоя проблема не уникальная, ее просто не существует
изучай принципы SSL и ассиметричного шифрования
 

Димон

Новичок
Автор оригинала: grigori
твоя проблема не уникальная, ее просто не существует
изучай принципы SSL и ассиметричного шифрования
Слышь, умник, не нужно тут советы давать! Нужно помогать проблемы решать!
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Тема закрыта.

Создание тем с названиями из ЗАГЛАВНЫХ букв, с оскорбительным содержанием, нецензурными выражениями и др. запрещено правилами форума.
Правила форума: http://phpclub.ru/talk/announcement.php?s=&forumid=12
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху