我一直在寻找一种方法来检查用户是否使用PHP中正确的(我的服务器的)SSL 证书连接到我的网站。我想我的问题与这个问题相似,只是我不是在暗示 MITM。
我环顾四周,但没有找到从当前连接中使用的证书获取信息并将其与服务器证书进行比较的方法。这是为了防止用户连接其他证书。
怎么做呢?
我一直在寻找一种方法来检查用户是否使用PHP中正确的(我的服务器的)SSL 证书连接到我的网站。我想我的问题与这个问题相似,只是我不是在暗示 MITM。
我环顾四周,但没有找到从当前连接中使用的证书获取信息并将其与服务器证书进行比较的方法。这是为了防止用户连接其他证书。
怎么做呢?
我不知道您所说的“防止用户与其他证书连接”是什么意思,这听起来不可能,但是:
你没有。
这仅适用于客户端证书。
您的网络服务器向客户端识别您,而不是 PHP。PHP 永远不会看到这一点,并且除了HTTPS=on
. 您不会向自己验证自己,因为它总是会评估为真。您链接到的问题已经有了答案,中间的人没有多大意义。您实际上是在使用明确的 PHP 脚本寻求解决任何和所有 SSL Man in the Middle 攻击的方法。
除非您的证书颁发机构发生 Diginotar 式的事情,否则无法使用另一个 SSL 证书连接到您的主机。
如果您想确保他们确实打算连接到您的站点,只需检查客户端连接到的主机即可。如果他们点击了您的 IP,并向其请求证书,然后与您的 CA 进行验证,他们将继续连接,并连接到$_SERVER["SERVER_NAME"]
和$_SERVER["HTTPS"] == "on"
但是,老实说,您为什么担心 SSL 证书不正确?它将被用户的 PC 标记。我会更担心会话解密。