首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查在与PHP的连接中使用了什么证书?

如何检查在与PHP的连接中使用了什么证书?
EN

Stack Overflow用户
提问于 2011-12-08 09:35:04
回答 3查看 4.2K关注 0票数 0

我有一个用PHP编写的网站,我想确保我的访问者使用我的SSL证书,我的意思是我想确保没有人在中间。我该怎么做呢?

编辑:有从POST或GET发送证书名称的技巧吗?

编辑:否则我将向用户计算机发送散列,用户计算机将使用javascript对证书名称进行散列,并将两者进行比较,无论它们是否匹配。这不是最好的解决方案,但总比没有好。

EN

回答 3

Stack Overflow用户

发布于 2011-12-08 09:45:01

您不能这样做: MitM攻击是基于这样一个事实:在服务器和有效客户端之间的人已经拥有所有有效证书。因此,对于您的服务器,他的行为与任何其他有效客户端一样。

票数 2
EN

Stack Overflow用户

发布于 2011-12-08 09:46:01

假设有一个人在中间,那么“您的访问者”提供的所有信息(您可能会使用某种方式来识别他们正在使用的证书)实际上都是中间的人提供的信息。这意味着您不能信任它(这是一个很好的经验法则,即使没有MITM也是如此)。

换句话说,这是不可能的。

你可以得出这个结论的另一种方式是:如果这是可能的,那么“中间人”不会是我们今天都知道的一个术语。

票数 2
EN

Stack Overflow用户

发布于 2011-12-09 03:11:31

正如@Jon和@zerkms已经说过的,检查服务器证书是客户端的责任。

作为服务器,您可以确保客户端正在使用已提供服务器证书的连接,方法之一是请求客户端证书身份验证。实际上,在与客户端证书握手期间,CertificateVerify TLS消息包含迄今为止已交换的所有握手消息的摘要的签名,包括服务器证书。如果TLS签名成功,则客户端将发送正确的签名,可根据其证书进行验证。

当然,从服务器的角度来看,这只有在您信任客户端证书的情况下才有效。

这不会完全解决问题,特别是因为对于客户端来说,接受使用它无法验证的服务器上的证书进行身份验证是不可取的(即使私钥不会被泄露,证书的身份也会被发送到流氓一方)。

同样,归根结底,用户仍然有责任决定它是否信任服务器的身份。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8425082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档