Php 用证书解码http响应

Php 用证书解码http响应,php,certificate,single-sign-on,Php,Certificate,Single Sign On,我是php新手,需要对SSO服务器进行身份验证。 SSO服务器是一个.Net服务器,使用SSL证书 当我从SSO服务器返回时,响应被编码。 我当然有证书的密钥,但是我如何解密响应呢 这对我来说非常模糊,请毫不犹豫地详细说明您的答案:) 非常感谢您的帮助, 向您致意您可以使用让php透明地处理ssl部分 让我们从简单开始: $c = file_get_contents('file.txt'); 未指定包装器,因此默认情况下使用文件:/。尝试打开本地文件file.txt,文件_get_conten

我是php新手,需要对SSO服务器进行身份验证。 SSO服务器是一个.Net服务器,使用SSL证书

当我从SSO服务器返回时,响应被编码。 我当然有证书的密钥,但是我如何解密响应呢

这对我来说非常模糊,请毫不犹豫地详细说明您的答案:)

非常感谢您的帮助, 向您致意

您可以使用让php透明地处理ssl部分

让我们从简单开始:

$c = file_get_contents('file.txt');
未指定包装器,因此默认情况下使用文件:/。尝试打开本地文件file.txt,文件_get_contents()从该流读取数据

下一步:http包装器

$c = file_get_contents('http://docs.php.net/fopen');
现在指定了一个包装器。法官提出请求http://docs.php.net/fopen 并将结果作为一个流返回,文件_从中获取其所有数据

如果在中启用了ssl支持,也可以使用https(另请参见)

可选:服务器/客户端身份验证
您可以附加一个允许您为所涉及的流包装器设置选项/参数的标签。
例如,http包装器在向服务器发送http请求时会考虑该参数。因此,如果您想让服务器“相信”某个特定版本的firefox会请求一个文档,您可以执行以下操作

$context = stream_context_create(
  array(
    'http'=>array('user-agent'=>'Mozilla/6.0 (Windows; U; Windows NT 7.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.9 (.NET CLR 3.5.30729)')
  )
);
$c = file_get_contents('http://docs.php.net/fopen', 0, $context);
发出https请求时,将同时使用和选项

$context = stream_context_create(
  array(
    'http'=>array(  ...http-wrapper options here ),
    'ssl'=>array(  ...ssl-wrapper options here )
  )
);
https服务器可能要求您在允许访问资源之前进行身份验证。客户端证书必须随请求一起发送,服务器决定是否接受。上下文参数ssl.local_cert允许您指定请求中使用的客户端证书。证书文件可能受密码保护。在这种情况下,您必须以ssl.passphrase的形式提供密码

$context = stream_context_create(
  array(
    'ssl'=>array(
      'local_cert'=>'xyz/VolkerCA/UserVolker.pem',
      'passphrase'=>'my secret passphrase'
    )
  )
);
$c = file_get_contents('https://hermes..../ssl/test.php', 0, $context);
另一方面,您可能(也)希望确保服务器确实是它声称的那样。如何决定(服务器)证书是否可接受/有效/可信,这一点超出了本文的范围
设置ssl.verify_peer=true,并将查找验证数据的信息作为ssl.cafile传递

$context = stream_context_create(
  array(
    'ssl'=>array(
      'local_cert'=>'xyz/VolkerCA/UserVolker.pem',
      'passphrase'=>'my secret passphrase',
      'verify_peer'=>true,
      'cafile'=>'xyz/VolkerCA/VolkerCA.pem'
    )
  )
);
$c = file_get_contents('https://hermes..../ssl/test.php', 0, $context);

如果来自SSO的响应通过SSL/HTTPS,则不需要解密响应。你能给出一些代码并指出你期望它做什么和没有做什么吗?另外,你能给出SSO服务器产品的名称或任何关于它的附加信息吗。
$context = stream_context_create(
  array(
    'ssl'=>array(
      'local_cert'=>'xyz/VolkerCA/UserVolker.pem',
      'passphrase'=>'my secret passphrase',
      'verify_peer'=>true,
      'cafile'=>'xyz/VolkerCA/VolkerCA.pem'
    )
  )
);
$c = file_get_contents('https://hermes..../ssl/test.php', 0, $context);