Я новичок в сертификате SSL. поэтому немного осторожно о том, что я сделал до сих пор. Я создаю приложение, использующее SSO для аутентификации пользователей с использованием PHP 5.4. Что у меня есть: сертификат (.pfx), предоставленный стороной. зашифрованный SAML в переменной POST.
De-crypted xml почти похож на SAML: почему сертификат внутри Подписи?
Мне нужно проверить, что ответ получен от проверенного провайдера. Я узнал, что в нем есть проблема .pem вместо .pfx. Поэтому я преобразовал файл .pfx в .pem с помощью команд ssl. Я использовал код из http://www.php.net/manual/es/function.openssl-verify.php#62526. Вот мой код.
$encxml=$_POST['SAMLResponse'];
$xml = new SimpleXMLElement(base64_decode($encxml));
$signature = ((string)$xml->Signature->SignatureValue);
var_dump($signature);
//do I need to do something with this X509Certificate value embedded in xml??
$cert = ((string)$xml->Signature->KeyInfo->X509Data->X509Certificate);
var_dump($cert);
//Or I need
$fp = fopen("xyz.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
print_r($priv_key);
$ok = openssl_verify($xml, $signature, $priv_key);
Так что я должен игнорировать X509Certificate, встроенный в xml, или мне нужно проверить его также... будет openssl_verify достаточно? и я на правильном пути? пожалуйста, любые рекомендации будут оценены.