Не удалось установить файл закрытого ключа: './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
ошибку.
Ответы
Ответ 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/). Это помогло мне выявить несоответствия.