php - 验证当前 ssl 是否是服务器的 ssl

标签 php authentication ssl certificate

我一直在寻找一种方法来检查用户是否已在 PHP 中使用正确的(我的服务器的)SSL 证书连接到我的网站。我想我的问题是 similar对这个, 除了我不是在暗示 MITM。

我环顾四周,但没有找到从当前连接中使用的证书中获取信息并将其与服务器证书进行比较的方法。这是为了防止用户连接到其他证书。

人们会怎么做呢?

最佳答案

简答

你不知道。

更长的答案

这仅适用于客户端证书。
您的网络服务器向客户端标识您,而不是 PHP。 PHP 永远不会看到这一点,除了 HTTPS=on 之外,没有环境变量被发送/传递给 PHP。您不会向自己验证自己,因为它总是评估为真。您链接到的问题已经有了答案,中间人意义不大。您实际上是在寻求使用明确的 PHP 脚本解决任何和所有 SSL 中间人攻击的解决方案。

没有能够使用另一个 SSL 证书连接到您的主机这样的事情,除非您的证书颁发机构发生了类似 Diginotar 的事情。

如果您想要确保他们真的要连接到您的站点,只需检查客户端连接到的主机即可。如果他们访问了您的 IP,并向其申请了证书,然后通过您的 CA 对其进行了验证,他们将继续连接,并连接到 $_SERVER["SERVER_NAME"]$ _SERVER["HTTPS"] == "开启"

但是,老实说,您为什么担心 SSL 证书不正确?它将被用户的 PC 标记。我会更担心 session 解密。

关于php - 验证当前 ssl 是否是服务器的 ssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14862464/

相关文章:

java - tomcat SSL请求参数丢失

php - get_class_vars() 未显示变量,但在同一类上运行的 property_exists() 返回 true

php - 从 ngThumb 指令上传 AngularJS 文件(使用 angular-file-upload)

asp.net - 在 Multi-Tenancy 应用中添加JwtBearer

linux - 如何要求身份验证和加密访问 Ubuntu 服务器上的文件和数据流端口?

email - 使用 TLS 发送电子邮件的 Windows 脚本

php - 如何将所有文件名放入php数组

php - IN() 条件中的大量占位符会减慢 PDO/Doctrine 的停止速度

java - 使用 LDAP 登录 OpenJDK

java - 在 JBOSS 6 AS 上配置 TLS 会导致 ERR_SSL_VERSION_OR_CIPHER_MISMATCH(在 Chrome 中)或 ssl_error_no_cypher_overlap(在 Mozilla 中)错误