某些服务器上缺少PHP 8$_服务器[';SSL#u协议';],如何确定加密协议和版本
我们最近将服务器升级到PHP8,其中一台服务器上缺少某些服务器上缺少PHP 8$_服务器[';SSL#u协议';],如何确定加密协议和版本,php,php-8,tls1.3,Php,Php 8,Tls1.3,我们最近将服务器升级到PHP8,其中一台服务器上缺少$\u SERVER['SSL\u PROTOCOL']变量 我在php.net上找不到对它的任何引用 我知道有些变量是从系统的其他部分提取的,尽管我不熟悉PHP从何处获取这个特定变量 我用引号操作符找到的所有搜索结果只显示了不相关的数据 我试图查看变量名是否被更改为类似于TLS_PROTOCOL的内容,因为SSL已经不相关一段时间了 我的目标是确保客户机使用TLS 1.2或TLS 1.3,这是实现这一目标的关键组件。如何获取$\u SER
$\u SERVER['SSL\u PROTOCOL']
变量
- 我在php.net上找不到对它的任何引用
- 我知道有些变量是从系统的其他部分提取的,尽管我不熟悉PHP从何处获取这个特定变量
- 我用引号操作符找到的所有搜索结果只显示了不相关的数据
- 我试图查看变量名是否被更改为类似于
的内容,因为SSL已经不相关一段时间了TLS_PROTOCOL
我的目标是确保客户机使用TLS 1.2或TLS 1.3,这是实现这一目标的关键组件。如何获取
$\u SERVER['SSL\u PROTOCOL']
或至少确定客户端通过PHP使用的网络加密类型的协议和协议版本?SSL/TLS加密由您的web服务器处理,而不是由PHP处理,因此必须在那里设置此变量。PHP的升级是巧合——是您升级或重新构建的其他东西造成了这种差异
如果您使用的是Apache,除非您设置了SSLOptions+StdEnvVars
,否则将禁用此信息以提高性能。请参阅位于的文档
快速搜索表明Nginx根本没有设置这个变量。可能是一个愚蠢的问题,但该服务器使用Apache提供https页面吗?@SiebeJongebloed不是一个愚蠢的问题,我应该提到Apache,是的。“我的目标是确保客户端使用TLS 1.2或TLS 1.3”你不能禁用HTTP服务器上的其他协议吗?@miken32是的,我已经禁用了1.1及更高版本:这样就不会有这样的客户端访问你的PHP代码。我知道Apache会处理它,我只是在完成所有搜索、测试之后没有建立完全连接……我很难让它正常工作;文档中说它可以使用
.htaccess
文件,我甚至已经直接重新启动了服务器几次以进行测试,什么都没有;e、 g.SSLOptions+StdEnvVars+ExportCertData
。“我做错了什么?”约翰,你说“在一台服务器上”找不到它;据推测,该服务器的配置存在一些差异。也许是有什么东西专门把它关掉了?叹气这是一个cPanel服务器,所以我会打电话给我的主机检查一下。通常情况下,如果是这样的话,那就是cPanel。。。我会回来报到的。