Использовать самоподписанный сертификат cURL?

У меня есть флеш-приложение, использующее самоподписанный сертификат. Я могу отправить запрос на завивание, используя:

curl -v -k -H "Content-Type: application/json" -d '{"data":"value1","key":"value2"}' https://<server_ip>:<port>

Подробные журналы показывают, что все прошло хорошо.

Я хотел избежать использования опции -k (--insecure) и вместо этого указать файл .pem, который может использовать curl. Посмотрев на страницу curl man, я обнаружил, что вы можете сделать это, используя опцию --cert. Поэтому я создал файл .pem, используя это:

openssl rsa -in server.key -text > private.pem

CURL выдает мне эту ошибку при использовании файла private.pem:

curl: (58) unable to use client certificate (no key found or wrong pass phrase?)

Любые предложения? - или это возможно только с правильно подписанным сертификатом?

Тпх

Ответ 1

Это еще одна версия этого вопроса: Использование openssl для получения сертификата с сервера

Или более прямо:

Использование curl --cert неверно, это для клиентских сертификатов.

Сначала получите сертификаты, которые использует ваш сервер:

$ openssl s_client -showcerts -servername server -connect server:443 > cacert.pem

(-servername необходим для SNI, чтобы получить правильный сертификат виртуального сервера)

Затем сделайте свою командную строку curl, которая настроена для проверки сервера в последующих операциях:

$ curl --cacert cacert.pem https://server/ [and the rest]