【问题标题】:how can I redirect to https which require certain sertificate for access如何重定向到需要某些证书才能访问的 https
【发布时间】:2011-05-25 05:07:24
【问题描述】:

有一个支付服务器。我可以通过 cURL 成功发送数据并设置适当的密钥和证书,支付服务器成功回答。但现在我需要重定向到该服务器,以便客户端可以输入信用卡数据。我怎样才能进行重定向?

是否可以在函数 header("Location: https://....") 中添加密钥/证书作为标头的一部分; ?

【问题讨论】:

  • 你确定支付系统是这样工作的吗?你读过文档吗?
  • 是的。如果我在浏览器中安装证书并输入重定向地址,我会得到响应。所以我必须在某处包含证书

标签: php authentication ssl redirect header


【解决方案1】:

即使您可以将证书与重定向一起发送,浏览器仍然需要对其进行验证。但你不能。不可能。您必须发送常规重定向。因为是https地址,浏览器会先向目标主机请求证书并验证(包括必要的用户干预)。结果是一样的。

无法绕过要求用户接受/信任或拒绝证书的弹出对话框。 HTTPS 旨在确保“对窃听者和中间人攻击的合理保护,前提是使用足够的密码套件并且服务器证书经过验证和信任。” (引自维基百科)

【讨论】:

  • 好的,那我重定向前需要在浏览器上安装证书吗?或在服务器上安装此证书以便在重定向期间应用它?
  • 好的,对方回答说,对于这个任务,他们有不需要认证的地址,所以这个问题的紧迫性降低了,但理论上如何完成它仍然很有趣。也许它可以以不同的方式解决 - 使用某种 cURL 身份验证,并在完成后重定向到指定的地址?
  • @banesto:如果您没有预先安装证书并且浏览器被配置为不自动接受它,用户将看到一个已知对话框,上面写着“你信任吗?我应该记住你的决定吗? ”。为什么要避免这种情况?在您的第二条评论中:您可以编写一个脚本,充当用户和您的提供者之间的代理。但是,为什么?您的代理和提供商之间的连接将由 SSL 保护,但如果您不以相同的方式保护与客户端的连接,则会降低安全性。如果这样做,问题仍然存在,只是证书不同。
  • @rik 目前没有这样的对话发生。支付服务器有我的证书,并且确切地知道它对应于我作为商家。如果我进行 cURL 调用,我会设置我的私钥、关键字和证书,使它们彼此对应(但没有 CA 身份验证),然后将数据发送到支付服务器。它工作正常。如果我在没有证书的情况下发送数据,我只会收到 BAD 证书错误,而不是“你是否信任此服务器”对话框,而这正是我简单地重定向到带有一些数据的服务器时发生的情况。
  • @banesto:当然,您的 PHP 脚本不会显示这样的对话框。那应该如何工作?如果您将用户重定向到 https 站点,如果他的浏览器配置为这样做,他会收到对话框。
【解决方案2】:

除非提供者有一个非常奇怪的设置,否则我认为你不能。有两个客户端 cpnnecting 到服务器 - 首先是使用客户端证书的 PHP 代码,然后您希望某处的浏览器能够在没有客户端证书的情况下绑定到同一个会话?唯一有意义的方法是支付提供商发回代理身份验证令牌 - 如果他们这样做了,他们将提供详细的文档。显然不是这样的。

虽然您可以代理服务器上的数据,但我强烈建议您切换到为您处理整个付款流程的其他支付提供商。

【讨论】:

  • 感谢您的回复!切换不是一个选项,因为我专门为这个支付服务器制作了演示商店。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 2018-02-04
相关资源
最近更新 更多