0

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

我有的:

  • 证书(namewhere.pfx)
  • 密码(一个小字符串)
  • xml 响应(解码和解析)

我正在使用什么:

  • php

我需要的:

  • 验证 xml 响应

我一直在谷歌搜索,并认为如果我有 .pem 格式的证书是可能的。为此,我搜索并找到了一些 Linux 命令。但我不确定如何去做。如何在我的 php 代码中使用这些命令并让创建的文件可用,或者我是否只需创建一次 .pem 文件并将其在线存储?如果是这样,我应该将它们放在哪里以避免安全问题等。

4

1 回答 1

3

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

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

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

于 2013-06-03T21:13:21.353 回答