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

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

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

в сертификате есть пароль, поэтому мне нужно ввести его, прежде чем я получу сертификат.файл 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/............./сертификат.pem'

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

1 ответов


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

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

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

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