Сертификат не принят. Невозможно установить файл закрытого ключа

Я пытаюсь установить соединение через SoapClient. Мне нужен сертификат для этого. Я получил сертификат .pfx. Я использовал следующую команду для создания файла .pem.

openssl pkcs12 -in cert.pfx -out cert.pem -nodes

В сертификате есть пароль, поэтому мне нужно ввести его, прежде чем я получу файл cert.pem. Пока все хорошо, я думаю.

Сейчас я пытаюсь подключиться к службе WSDL.

$url = "https://test.website.com/webservices/transfer.asmx?WSDL";
$cert = '/path/to/cert.pem';
$passphrase = "12345678";

$soapClient = new SoapClient($url, array('local_cert'=>$cert,'passphrase'=>$passphrase));

Я получаю следующую ошибку:

(Предупреждение) SoapClient :: SoapClient (): невозможно установить файл закрытого ключа `/var/www/vhosts/…………./cert.pem ‘

Я думаю, что проблема в сертификате. Является ли способ, которым я преобразовал .pfx в .pem правильный путь?

6

Решение

Проблема, с которой вы сталкиваетесь, заключается в том, что .pem Сертификат всегда должен быть зашифрованным файлом. Согласно Документы OpenSSL для команды pkcs12 когда ты использовал -nodes он ничего не зашифровал, вместо этого поместил каждый узел в простой текст, что вызвало .pem сертификат недействительным и ваш SoapClient Не удалось разобрать неверный файл.

Чтобы исправить это, надеюсь, вы не удалили оригинал cert.pfxпросто переконвертируйте его, используя следующую строку:

openssl pkcs12 -in cert.pfx -out cert.pem -clcerts

и ваш cert.pem файл будет правильным.

7

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

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

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