Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据.pfx证书检查xml_Php_Xml_X509certificate_Digital Signature_Saml - Fatal编程技术网

Php 根据.pfx证书检查xml

Php 根据.pfx证书检查xml,php,xml,x509certificate,digital-signature,saml,Php,Xml,X509certificate,Digital Signature,Saml,我正在为SSO创建一个服务。我已经启动并运行了整个系统,但我唯一要做的就是使用身份提供者提供的证书验证我们得到的响应 我所拥有的: 证书(namehere.pfx) 密码(小字符串) xml响应(解码和解析) 我使用的是: php 我需要的是: 验证xml响应的步骤 我在谷歌上搜索了很多次,发现如果我有一个.pem格式的证书是可能的。为此,我在谷歌上搜索并找到了一些Linux命令。但我不知道该怎么做。如何在php代码中使用这些命令并使创建的文件可用,还是只需创建一次.pem文件并在线

我正在为SSO创建一个服务。我已经启动并运行了整个系统,但我唯一要做的就是使用身份提供者提供的证书验证我们得到的响应

我所拥有的:

  • 证书(namehere.pfx)
  • 密码(小字符串)
  • xml响应(解码和解析)
我使用的是:

  • php
我需要的是:

  • 验证xml响应的步骤

我在谷歌上搜索了很多次,发现如果我有一个.pem格式的证书是可能的。为此,我在谷歌上搜索并找到了一些Linux命令。但我不知道该怎么做。如何在php代码中使用这些命令并使创建的文件可用,还是只需创建一次.pem文件并在线存储?如果是,我应该将它们放在哪里以避免安全问题等。

如果您只是尝试验证数字签名,那么您只需要签名者的公共证书。就安全问题而言,您不必担心暴露证书,因为它已经是公开的。最重要的是确保没有人可以将您信任的证书换成另一个证书

由于您只需要公共证书,因此最好从pfx文件中提取该证书。您可以使用给定的命令执行此操作。某些pfx文件可能包含您不想公开的私钥。这是提取公共证书并仅使用该证书的另一个原因


然后您可以使用验证签名。您需要已签名的数据、签名和公钥。该链接中的一些示例代码将从证书中提取公钥并验证签名。

如果您仅尝试验证数字签名,则只需要签名者的公钥。就安全问题而言,您不必担心暴露证书,因为它已经是公开的。最重要的是确保没有人可以将您信任的证书换成另一个证书

由于您只需要公共证书,因此最好从pfx文件中提取该证书。您可以使用给定的命令执行此操作。某些pfx文件可能包含您不想公开的私钥。这是提取公共证书并仅使用该证书的另一个原因


然后您可以使用验证签名。您需要已签名的数据、签名和公钥。该链接中有一些示例代码,可以从证书中提取公钥并验证签名。

能否提供更多详细信息?您究竟想在xml响应中验证什么?根据SAML标准,xml中嵌入了证书/数字签名。我们还应该有一个用于验证响应是否来自经过身份验证的源的证书。您能提供更多详细信息吗?您究竟想在xml响应中验证什么?根据SAML标准,xml中嵌入了证书/数字签名。我们还应该有一个证书,用于验证响应是否来自经过身份验证的源。