Я пытаюсь подключиться к сервису, которому для авторизации требуется сертификат. Процесс заключается в том, что я отправляю сервису CSR-файл. Сервис подписывает CSR и отправляет мне сертификат, который я использую для подключения.
Я сгенерировал CSR с помощью следующей командной строки:
openssl req -new -nodes -newkey rsa:2048 -keyout cert.key -out cert.csr
Я взял содержимое cert.csr и отправил им. Они генерируют сертификат клиента, и я получил обратно файл PEM.
Теперь я пытаюсь подключиться, используя их файл сертификата в SSLCERT для curl () и предоставляя закрытый ключ из cert.key как CURLOPT_SSLKEY - (который я получил на шаге 1).
Не удается:
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Что я делаю не так в этом процессе?
Это работает, когда я пытаюсь использовать полученный тестовый сертификат, включающий закрытый ключ от службы (самоподписанный сертификат). Но когда я использую сертификат, который они сгенерировали из моего CSR, а затем использую мой закрытый ключ в качестве ключа, возникает ошибка с ошибкой рукопожатия.
Итак, я знаю, что это не имеет отношения к тому, что openssl / curl не поддерживает v3 / TLS и т. Д., Что другие при поиске решения обнаружили, что их проблема была.
Вот что я бегу:
curl -i -v --request POST https://service.com/ --cert clientcert.pem --key private_key.pem --cert-type pem --tlsv1.1 --insecure
* Connected to service.com (1xx.xxx.xxx.xx) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Request CERT (13):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS handshake, CERT verify (15):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS alert, Server hello (2):
* error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
* Closing connection 0
Запуск следующих версий: curl 7.35.0 (x86_64-pc-linux-gnu) libcurl / 7.35.0 OpenSSL / 1.0.1f zlib / 1.2.8 libidn / 1.28 librtmp / 2.3
curl -i -v ...
- См. справочную страницу cURL и часть о Заставить [ing] curl использовать TLS версии 1.x при согласовании с удаленным TLS-сервером .... - person jww   schedule 02.04.2016curl ... --key private_key.pem...
- Согласно команде OpenSSL, которую вы использовали для создания CSR, ваш ключ называетсяcert.key
; а неprivate_key.pem
. - person jww   schedule 02.04.2016