【问题标题】:Forward SSL Client certificate using php_curl使用 php_curl 转发 SSL 客户端证书
【发布时间】:2011-09-16 10:11:24
【问题描述】:

我有以下设置:

有 2 台服务器需要 SSL 客户端证书。 该证书用于身份验证。

用户(使用他的浏览器)将使用他的客户端证书向 Server1 发出请求。 到目前为止,一切都很好。 现在,我想做的是: Server1 将向 Server2 发出请求,解析该响应,并将其返回给用户。

Server1 使用 php_curl 执行请求。 我希望 Server1 将(用户的)原始客户端证书传递给 Server2(它将验证用户,..)。 Server1 然后“代表”用户发布。

这可能吗?

Apache 已启用 ExportCertData SSLOption。 我已经尝试将以下标头添加到 curl 选项(认为这与使用客户端证书的 Apache 代理设置大致相同):

$headers[] = "SSL_CLIENT_S_DN: ".$_SERVER['SSL_CLIENT_S_DN'];
$headers[] = "SSL_CLIENT_I_DN: ".$_SERVER['SSL_CLIENT_I_DN'];
$headers[] = "SSL_SERVER_S_DN_OU: ".$_SERVER['SSL_SERVER_S_DN_OU'];
$headers[] = "SSL_CLIENT_VERIFY: ".$_SERVER['SSL_CLIENT_VERIFY'];
$headers[] = "SSL_CLIENT_V_START: ".$_SERVER['SSL_CLIENT_V_START'];
$headers[] = "SSL_CLIENT_V_END: ".$_SERVER['SSL_CLIENT_V_END'];
$headers[] = "SSL_CLIENT_M_VERSION: ".$_SERVER['SSL_CLIENT_M_VERSION'];
$headers[] = "SSL_CLIENT_M_SERIAL: ".$_SERVER['SSL_CLIENT_M_SERIAL'];
$headers[] = "SSL_CLIENT_CERT: ".$_SERVER['SSL_CLIENT_CERT'];
$headers[] = "SSL_CLIENT_VERIFY: ".$_SERVER['SSL_CLIENT_VERIFY'];
$headers[] = "SSL_SERVER_M_VERSION: ".$_SERVER['SSL_SERVER_M_VERSION'];
$headers[] = "SSL_SERVER_I_DN: ".$_SERVER['SSL_SERVER_I_DN'];
$headers[] = "SSL_SERVER_CERT: ".$_SERVER['SSL_SERVER_CERT'];

但没有运气。

【问题讨论】:

  • IIRC SSL 是端到端的,你不能代理它。
  • Apache 可以在 SSL 连接上做代理。另外,我可以使用相同的证书设置新的 SSL 连接,还是不可能?我也不太想代理请求,我正在做另一个请求,只是使用相同的证书..
  • 客户端证书?然后他们将不再按预期工作。您应该尝试在中间人攻击客户端连接以使其更加透明。

标签: php curl openssl client-certificates


【解决方案1】:

除非您手头有带有密钥等的证书,否则您无法通过带有原始客户端证书的请求。这就是 SSL 的工作原理。

如果您同时运行两台服务器,您可以在 Server1 上验证客户端证书,并通过自定义标头或您认为最适合的任何方式在 Server2 上传递经过验证的信息。

如果您不负责第二台服务器,那么您就没有运气了,因为让 MITM 攻击变得简单并不是 SSL 创建者的意图之一。

【讨论】:

  • 这是我的备份解决方案。我知道它有效,但我更愿意根据他的 SSL 证书对用户进行身份验证,而不是另一个(即使它是受信任的)服务器将用户的 CN 作为字符串参数传递给我。我了解中间主要攻击的危险,但是 Apache 代理也会存在同样的问题,不是吗?
  • 当然,通过一定的努力,您可以像 Apache mod_proxy 那样传递 未解密 请求。但我找不到任何特殊用途。
猜你喜欢
  • 2013-08-04
  • 2010-10-16
  • 2017-04-28
  • 2012-02-15
  • 1970-01-01
  • 2018-02-15
  • 2017-06-01
  • 2012-10-18
  • 2012-07-19
相关资源
最近更新 更多