Подтвердить что ты не робот

Не удалось установить файл закрытого ключа: './cert.pem' тип PEM

Я использую curl для загрузки данных с сайта https с использованием открытых файлов сертификатов.

Системная информация:

  • ОС: Fedora 14
  • curl: curl 7.30.0
  • openssl: OpenSSL 1.0.0a-fips

Команда есть,

curl -v "https://<ip:<port>" --cert "./cert.pem" --cacert "./cacert.pem" --cert-type PEM
* About to connect() to kng.com port 443 (#0)
*   Trying 11.19.37.123...
* Adding handle: conn: 0x8189e68
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x8189e68) send_pipe: 1, recv_pipe: 0
* Connected to fkng.com (11.19.37.123) port 443 (#0)
* unable to set private key file: './cert.pem' type PEM
* Closing connection 0
curl: (58) unable to set private key file: './cert.pem' type PEM

Я дал все права на файл .pem, но curl .pem ошибку.

4b9b3361

Ответ 1

После чтения cURL документации о параметрах, которые вы использовали, похоже, что закрытый ключ сертификата находится не в одном файле. Если он находится в другом файле, вам нужно указать его с помощью файла -key и предоставить кодовую фразу.

Итак, убедитесь, что у cert.pem есть закрытый ключ (вместе с сертификатом) или поставьте его с помощью опции -key.

Кроме того, в этой документации упоминается, что   Обратите внимание, что этот параметр предполагает файл с сертификатом, который является закрытым ключом, а приватный сертификат - конкатенированным!

Как они объединены? Это довольно легко. Поместите их один за другим в том же файле.

Вы можете получить дополнительную помощь по этому здесь.

Я считаю, что это может вам помочь.

Ответ 2

Я столкнулся с этой проблемой, когда использовал Open SSL, и решение заключалось в том, чтобы разделить сертификат на 3 файла и использовать все из них, выполняющих вызов с помощью Curl:

openssl pkcs12 -in mycert.p12 -out ca.pem -cacerts -nokeys
openssl pkcs12 -in mycert.p12 -out client.pem -clcerts -nokeys 
openssl pkcs12 -in mycert.p12 -out key.pem -nocerts

curl --insecure --key key.pem --cacert ca.pem --cert client.pem:KeyChoosenByMeWhenIrunOpenSSL https://thesite

Ответ 3

Не уверен. Если это поможет кому-то, но я получаю эту ошибку (хотя я использовал php для ее создания вместо командной строки), и для ее исправления я должен был убедиться, что старые файлы .key или .pem не были в каталоге, на который я смотрел. Удалив их и создав свежие файлы с аутентификацией, он отлично работает!

Ответ 4

У меня похожая ситуация, но я использую ключ и сертификат в разных файлах.

в моем случае вы можете проверить соответствие ключа и блокировки, сравнив хэши (см. https://michaelheap.com/curl-58-unable-to-set-private-key-file-server-key-type- pem/). Это помогло мне выявить несоответствия.