Как в linux использовать сертификат сгенерированный в windows? День добрый. Пытаюсь установить с помощью PHP в Ubuntu 14.10 подключение к одному SOAP-сервису. Что было сделано:
Фрагмент документации:Создание и настройка сертификатов
Для самостоятельного создания сертификата выполните следующие действия:
1. Выполните следующую команду для создания сертификата:
makecert.exe -n "CN=name" -ss My -r -m 120 -pe -sky exchange -a sha1
2. С помощью оснастки «Сертификаты» экспортируйте созданный сертификат в .cer файл и отправьте его на адрес, предоставленной службы технической поддержки.
3. С помощью оснастки «Сертификаты» импортируйте файл сертификата в «Доверенные лица» (Trusted people).
Теперь у меня имеется эта пара сертификатов *.cer. Моё затруднение в том, чтобы понять, как этими сертификатами воспользоваться. Пытался создавать стандартный SoapClient указывая в настройках присланный мне сертификат конвертированный в pem-формат, соединение молчком отваливается по таймауту.
Попытался отправить запрос с помощью curl без soap-клиента, тогда уже вернулась ошибка о подписи и безопасности. Насколько помню (давно воюю) я взял сертификат сгенерированный на нашей стороне в Windows, извлёк из него открытый и закрытый ключ в pem-формате, указал их в настройках curl с помощью CURLOPT_SSH_PUBLIC_KEYFILE и CURLOPT_SSH_PRIVATE_KEYFILE, указал сертификат присланный техподдержкой сервиса в pem-формате с помощью CURLOPT_SSLCERT, но всё равно ошибка та же.
Ранее приходилось работать только с сертификатами от crypto, но там помимо сертификаты присылали ещё шесть файлов ключей и приходилось делать подмену библиотеки, чтобы использовать курл от криптопро, но как я понимаю, здесь не тот случай.
Вообще, как я понимаю, для подключения нужно использовать открытый и закрытый ключ той машины, на который генерировался сертификат, он же ведь подтверждает только пару этой машины?
Ещё пытался запускать скрипт получив доступ к той машине в windows в которой генерировался сертификат, предварительно добавив его с помощью оснастки в доверенные, но получил те же самые ошибки о подписи и безопасности. "An error occurred when verifying security for the message."
Направьте меня пожалуйста на путь истинный.

21 Авг 2019 в 07:14
227 +1
1
Ответы
1

Для использования сертификата, сгенерированного в Windows, в Linux, вам нужно сконвертировать его в PEM-формат. Для этого можно воспользоваться программой OpenSSL.

Чтобы сконвертировать сертификат в формат PEM, выполните следующую команду в терминале Linux:

openssl x509 -inform der -in certificate.cer -out certificate.pem

Где certificate.cer - это имя вашего сертификата в формате DER (обычно экспортированного из Windows).

После того, как вы сконвертировали сертификат в PEM-формат, вы можете использовать его в своем PHP-коде. Укажите путь к файлу сертификата в параметре CURLOPT_SSLCERT для CURL запросов.

Если у вас все еще возникают ошибки валидации сертификата, попробуйте добавить параметр CURLOPT_SSL_VERIFYHOST и установить его в значение 0, чтобы отключить проверку хоста (но при этом будьте осторожны, так как это делает ваше соединение менее безопасным).

Надеюсь, эти советы помогут вам справиться с проблемой подключения к SOAP-сервису в Ubuntu с использованием сертификата, сгенерированного в Windows. Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь спрашивать. Удачи!

20 Апр в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир