Сертификат клиента на EPP Call

Я пытаюсь использовать бесплатный клиентский сертификат cacert.org в вызове curl. проверьте следующее …

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://url.com');
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSLCERT, 'cert.crt');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

Я скачал сертификат как PEM, теперь я получаю следующую ошибку …

unable to set private key file: 'cert.crt' type PEM

Я перепробовал все пути, но не смог исправить, попробовал также и Google. Пожалуйста помоги.

1

Решение

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

Я предполагаю, что сертификат был выдан вам из центра сертификации и установлен в вашем браузере. Когда это происходит, закрытый ключ хранится браузером в безопасном месте отдельно от сертификата (зависит от ОС & браузер).

Большинство браузеров не позволяют экспортировать сертификат и закрытый ключ без его шифрования (указав пароль). Но в зависимости от содержимого вашего файла PEM соответствующий закрытый ключ отсутствует.

Чтобы решить эту проблему, вам, вероятно, придется пройти несколько шагов:

  • Снова экспортируйте сертификат из браузера и убедитесь, что он содержит закрытый ключ
  • Chrome на Win / Linux и Internet Explorer на Windows потребует от вас ввести пароль. Сертификат должен быть экспортирован как файл PKCS # 12 (.p12)

Проблема сейчас в том, что закрытый ключ зашифрован, и, насколько я знаю, он должен быть незашифрован для cURL.

  • использование openssl расшифровать закрытый ключ и экспортировать сертификат и ключ в формат PEM
  • openssl pkcs12 -in cert.p12 -nodes (при этом будет запрашиваться пароль, используемый для шифрования при экспорте из браузера) (cert.p12 — это сертификат & закрытый ключ в формате PKCS12. -nodes позволяет экспортировать закрытый ключ без шифрования)

Это распечатает на стандартный вывод сертификат и ключ в формате PEM.

Вы должны увидеть два раздела:

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

а также

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

Скорее всего, у вас уже есть сертификат, но вам нужно сохранить закрытый ключ в другом файле. Поскольку он не зашифрован на сервере, соблюдайте осторожность, чтобы правильно установить разрешения, как правило, 0400 так что другие пользователи не могут получить к нему доступ

0

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

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

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