Задать вопрос
Bakotiinii
@Bakotiinii

Как подписать запрос SSL сертификатом с удаленного ресурса?

Всем привет

Задача:

Нужно сделать запрос на сторонний ресурс. По требованию, ты подписываешь свой запрос специальным pem сертификтом (он содержит ssl и private key).

Если загружаю сертификат к себе на сервер и делаю запрос вот таким образом, то все идет нормально. httpClient (это Guzzle)

$response = $this->httpClient->send($request,
            [
                'cert' => '/var/www/api/container/src/cert.pem'
            ]
        );


Если пытаюсь вытащить сертификат из удаленного ресурса, либо как-то его подставить

$response = $this->httpClient->send($request,
            [
                   'cert' => file_get_contents('https://certs/cert.pem',)
            ]
        );


То запрос падает с ошибкой, что не найдет SSL. Аналогично, если пытаюсь сохранить серт в базу в виде text и вставить его в виде строки.

__

Зачем это надо? По техническим причинам не могу загрузить сертификат на тот же сервер, где выполняется апи. Могу либо на специальное файловое хранилище на отдельной машине, либо как-то в базу (которая так же на другой машине)
  • Вопрос задан
  • 707 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
Есть подозрение, что параметр/аргумент cert который вы указываете - должен принимать путь до сертификата, а Вы передаёте ему содержимое сертификата, а не путь. Решений тут на вскидку несколько:
1. Найдите HTTP-клиент (или параметр у текущего клиента) который позволяет указывать содержимое сертификата
2. Скачивайте сертификат на сервер, указывайте путь до него и удаляйте, после выполнения запроса сертификат (если в этом есть необходимость)
3. Аналогичным образом Вы можете сохранить его в БД, доставать оттуда и сохранять временно при каждом запросе
4. Можете попробовать переписать сам клиент таким образом, что бы он принимал на вход не путь, а сразу содержимое сертификата (я думаю, это будет не очень сложно)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
CityCat4
@CityCat4 Куратор тега Цифровые сертификаты
//COPY01 EXEC PGM=IEBGENER
(он содержит ssl и private key).

Если он должен содержать сертификат и ключ - то не можно никак. Сертификат найти запросто, ключ - только спи... украсть :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы