2013-06-03 7 views
0

Я работаю над созданием Service Provide для единого входа. У меня уже есть вся система и работает, но единственное, что мне осталось сделать, это проверить полученный ответ, используя сертификат, предоставленный поставщиком удостоверений.Проверьте xml на .pfx-сертификат

Что у меня есть:

  • : Сертификат (namewhere.pfx)
  • пароль (небольшая строка)
  • ответ XML (декодируется и разобран)

Что я м с использованием:

  • php

Что мне нужно:

  • проверить ответ XML

Я погуглить много, и понял, что это было возможно, если бы я имел сертификат в формате .pem. Для этого я googled и нашел несколько команд Linux. Но я не уверен, как это сделать. Как использовать эти команды в моем php-коде и иметь созданные файлы, или просто создать файл .pem один раз и сохранить его в Интернете? Если да, где я их размещаю, чтобы избежать проблем с безопасностью и т. Д.

+0

Можете вдаваться в подробности? Что именно вы пытаетесь проверить в ответе xml? – gtrig

+0

Согласно стандартам SAML, xml имеет встроенный в него сертификат/цифровую подпись. Мы также должны иметь сертификат, который мы используем, чтобы проверить, является ли ответ аутентифицированным источником. – salmanhijazi

ответ

3

Если вы только пытаетесь проверить цифровую подпись, вам нужен только общий сертификат подписывающего лица. Что касается проблем безопасности, вам не нужно беспокоиться об экспорте сертификата, поскольку он уже будет публичным. Главное - убедиться, что никто не может переключить сертификат, которому вы доверяете, другим.

Поскольку вам нужен только общий сертификат, вероятно, лучше извлечь его из файла pfx. Вы можете сделать это, используя команды, заданные here (Converting pfx to pem using openssl). Некоторые файлы pfx могут содержать закрытые ключи, которые вы бы не хотели раскрывать. Это еще одна причина для извлечения публичного сертификата и только его использования.

Для того, чтобы подтвердить свою подпись, вы можете использовать openssl_verify() function. Вам нужны данные, которые были подписаны, подпись и открытый ключ. На этой ссылке есть пример кода, который будет извлекать открытый ключ из сертификата и проверять подпись.

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