curl «Открытый ключ Peer недействителен.» невозможно загрузить ключ клиента: -8178 (SEC_ERROR_BAD_KEY)

Я пытаюсь подключить мое PHP-приложение к серверу, который требует авторизации с помощью закрытого ключа и не имеет сертификатов на публичных серверах.

Расположение API: https://b2b.postaonline.cz/

Чтобы получить доступ к API из браузера, я установил следующие сертификаты: http://www.postsignum.cz/certifikaty_autorit.html (ПЭМ)

затем я смог соединиться с моим сертификатом .pfx, полученным из PostSignum.

Однако я не могу подключиться с сервера Linux, используя curl. Ofc, я искал и тестировал материал несколько часов — например, преобразование private в RSA и так далее.

Итак, текущее состояние таково, что я использовал полученный .pfx и извлек такие вещи:

 openssl pkcs12 -in certificate.pfx -out ca.pem -cacerts -nokeys
openssl pkcs12 -in certificate.pfx -out client.pem -clcerts -nokeys
openssl pkcs12 -in certificate.pfx -out key.pem -nocerts

После этого я использовал curl для подключения:

$ curl -v  --key ./key.pem --cacert ./ca.pem --cert ./client.pem https://b2b.postaonline.cz/
*   Trying 193.150.24.113...
* Connected to b2b.postaonline.cz (193.150.24.113) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: ./ca.pem
CApath: none
* unable to load client key: -8178 (SEC_ERROR_BAD_KEY)
* NSS error -8178 (SEC_ERROR_BAD_KEY)
* Peer's public key is invalid.
* Closing connection 0
curl: (58) unable to load client key: -8178 (SEC_ERROR_BAD_KEY)

Это то, что я получаю со всеми вариациями.

Примечания: когда я загрузил свой сертификат.pfx в браузер, соединение все еще было небезопасным. Итак, я скачал следующее с сайта сертификации PostSignum и загрузил их в браузер

Postsignum Root QCA 2
Postsignum Public CA 2

только после этого я смог подключиться из браузера.

Я думаю, что это что-то, мне нужно сделать также в завитке, но я понятия не имею, как. С ca.pem и client.pem, которые извлекаются только из certificate.pfx — я думаю, что curl сталкивается с той же проблемой, что и браузер, до загрузки дополнительных сертификатов Authoritiy. Есть идеи, как это использовать?

Спасибо.

0

Решение

было объединено 2 проблемы, теперь исправлено — благодаря strace.

1) Я должен предоставить закрытый ключ RSA, как упоминалось в других сообщениях
2) при использовании локального файла закрытого ключа с парольной фразой мы можем предоставить его как ./key:pass, но с помощью опции —pass {фраза}

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]