2015-12-20 2 views
1

Я застрял в этой проблеме с последних нескольких дней, но не смог получить какое-либо решение.Добавить сертификат клиента в соединение сокетов

Я использую клиент чистый PHP-ПОП и вот мой код ...

$context = stream_context_create(
    array(
     'ssl'=>array(
      'local_cert'=> dirname(__FILE__).'/cert.pem', 
      'passphrase' => dirname(__FILE__).'/key.pem', 
     ) 
    ) 
); 

$greeting = $client->connect($host, $port, $timeout, $ssl, $context); 
echo $greeting; 

я получаю следующее сообщение об ошибке ...

Warning: stream_socket_client(): Unable to set private key file 

И прежде чем вы спросите key.pem начинается с -----BEGIN RSA PRIVATE KEY----- и cert.pem начинается с -----BEGIN CERTIFICATE-----

Однако я могу подключиться, используя ...

openssl s_client -connect epp.dom.net:700 -key key.pem -cert cert.pem -CApath /etc/ssl/certs/ 

Эта команда показывает, что это значит, что мои сертификаты в порядке?

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

Спасибо.

ответ

1

В соответствии с PHP documentation закрытый ключ должен быть указан в параметре контекста local_pk. passphrase варианта (который вы используете) необходим, когда сам частный ключевой файл был зашифрован с помощью парольной фразы:

local_pk струнного

Пути к локальному файлу закрытого ключа в файловой системе в случае отдельного файлы для сертификата (local_cert) и закрытый ключ.

passphrase строка

Passphrase, с которым ваш файл local_cert был закодирован.

Это означает, что ваш контекст потока должен быть инициализирован следующим образом:

$context = stream_context_create(array(
    'ssl' => array(
     'local_cert' => dirname(__FILE__) . '/cert.pem', 
     'local_pk' => dirname(__FILE__) . '/key.pem', 
    ) 
)); 

В качестве альтернативы, вы можете также сцепить сертификат и закрытый ключ в один файл и использовать только local_cert вариант (плюс passphrase опция if - и только если - ваш секретный ключ зашифрован парольной фразой).

+0

Спасибо, господин, вы удивительный человек. Большое спасибо. Я так счастлив. Счастливый праздник, вы доступны для небольших проектов? – seoppc

+0

есть ли способ/адрес электронной почты, чтобы связаться с вами? – seoppc

+0

У меня есть еще один вопрос о https://gitlab.centralnic.com/centralnic/php-epp/ – seoppc

Смежные вопросы