使用 PHP 检查 SSL



我需要强制我的 Web 应用程序仅通过 HTTPS 工作,现在通常我会检查是否存在$_SERVER['HTTPS']值,但是由于我使用 AWS 证书管理器颁发和管理我的 SSL 证书,并且应用程序位于 AWS 负载均衡器后面,该负载均衡器在 LB 处终止 SSL 并使用普通 HTTP 在内部发送它,服务器没有填充该值。

我正在寻找一种检测连接是否通过HTTP或HTTPS建立的方法,同时考虑到SSL证书位于负载均衡器上并在那里终止的事实。

你可以检查X-Forwarded-Proto头。

https://en.wikipedia.org/wiki/List_of_HTTP_header_fields

用于标识 HTTP 请求的原始协议的事实标准,因为反向代理(或负载平衡器)可以使用 HTTP 与 Web 服务器通信,即使对反向代理的请求是 HTTPS。标头的另一种形式(X-ProxyUser-Ip)由Google客户端与Google服务器通信使用。

X-Forwarded-Proto: https

使用PHP,您可以通过以下方式进行检查:

apache_response_headers();

http://php.net/manual/de/function.apache-response-headers.php

最新更新