CURL и ssl

zerkms

TDD infected
Команда форума
Господа, есть такой вот тестовый код:
PHP:
$handle = curl_init();
$options = array( 
                  CURLOPT_RETURNTRANSFER => false,
                  CURLOPT_HEADER         => true,
                  CURLOPT_FOLLOWLOCATION => false,
                  CURLOPT_SSL_VERIFYHOST => 0,
                  CURLOPT_SSL_VERIFYPEER => false,
                  CURLOPT_SSLCERT         => dirname(__FILE__) . '/file.crt',
                  CURLOPT_SSLCERTPASSWD     => 'passwd',
                  CURLOPT_SSLCERTTYPE => 'PEM',
                  CURLOPT_USERAGENT      => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)',
                  CURLOPT_VERBOSE        => true,
                  CURLOPT_URL            => 'https://192.168.132.72:444'
           );

curl_setopt_array($handle, $options);
$response = curl_exec($handle);
if (curl_errno($handle)) {
  echo 'Error: ' . curl_error($handle);
}

var_dump($response);

curl_close($handle);
Результат выполнения:

PHP:
Error: unable to set private key file: '/var/www/localhost/htdocs/file.crt' type PEM
Теперь откуда у меня этот сертификат взялся: мне прислали файл .p12, который я импортнул в ФФ, затем произвёл экспорт в формате PEM (пробовал и DER)

Пароль - тот же самый, который указывается при импорте p12

При этом фф нормально заходит по адресу.


Мысли?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Мож того, банально прав нет на чтение файла с сертификатом?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
А в PEM файлике точно лежит и ключ и сертификат?
Причем, если не ошибаюсь, порядок важен: сначала ключ, потом сертификат:
-----BEGIN RSA PRIVATE KEY-----
[ букавки ]
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
[ букавки ]
-----END CERTIFICATE-----
 

zerkms

TDD infected
Команда форума
У меня там лежит просто -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----

А ключ как получить? Потому что браузер с ними вполне себе работает окейно
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Не, если тебе не нужен ключ, а нужен только клиентский сертификат, тогда тебе не нужен и пароль — поскольку пароль от закрытого ключа, а не от сертификата.
 

fixxxer

К.О.
Партнер клуба
Я хз что там в браузере. Но нужны оба блока - RSA PRIVATE KEY (приватный ключ) и CERTIFICATE.
В .p12 хранятся оба. Нафиг браузером что-то делать, openssl pkcs12 -in file.p12 -out file.pem -nodes или как то так
 

zerkms

TDD infected
Команда форума
Всё, разрулил.

На линуксе получил сертификат из этого p12, и сразу всё завелось

В итоговом файле 2 блока BEGIN CERTIFICATE и 1 BEGIN RSA PRIVATE KEY

И ещё какие-то атрибуты
 
Сверху