PHP SERVER SSL_CLIENT_CERT 在浏览页面时消失

PHP SERVER SSL_CLIENT_CERT 在浏览页面时消失

我正在容器化使用 SSL 客户端证书验证的旧版 Web 服务。我有一个 apache 2.4 容器和一个 PHP 7.4 FPM 容器。

我的 apache 虚拟主机配置文件如下

...
<VirtualHost *:8443>
  DocumentRoot /var/www/html/myapp
  ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/var/www/html/myapp/$1
  SSLEngine on
  ....
  SSLCACertificateFile <PATH TO CA>
  SSLVerifyClient optional
  SSLVerifyDepth 2
  ...
  <Files ~ "\.(cgi|shtml||phtml|php3?)$">
    SSLOptions +StdEnvVars
  </Files>
  <Directory "/var/www/html/myapp">
    SSLOptions +StdEnvVars +ExportCertData
    Require all granted
    DirectoryIndex index.php
  </Directory>
  ...
</VirtualHost>
....

索引.php

<?
   print_r($_SERVER);
?>
<html>
....
  <a href=go.php><img name=go src=="go.png" alt="GO!"></a>
....
</html>

转到php

<?php
  print_r($_SERVER);
  ... DO Authoriztion stuff with SSL_CLIENT_CERT ...
?>

docker-compose.yml

version: 3.4"
services:
  apache:\
    image: myappApache
    depends_on: php
    networks:
      - frontend
      - backend
    ports:
      - "80:8080"
      - "443:8443"
    volumes:
      - ./myapp/:/var/www/html/myapp:rw
  php:
    image: myappPHP
    networks:
      - backend
    volumes:
      - ./myapp/:/var/www/html/myapp:to
  networks:
    frontend:
    backend:

当我导航到我的 index.php 并打印出 的值时, 我可以看到_SERVER。但是,当我单击该页面上的链接时,会将我带到网站上的第二个页面 ,但中缺少。其他 SSL 相关项目也缺失了print_r($_SERVER)[SSL_CLIENT_CERT] => -----BEGIN CERTIFICARTE----- ... -----END CERTIFICATE-----SSL_CLIENT_CERT_SERVER

  • SSL_会话_恢复
  • SSL 会话 ID
  • SSL 服务器 A_SIG
  • SSL 服务器密钥
  • SSL 服务器 ID

如何防止_SERVER配置设置在页面之间消失?

答案1

不确定为什么这样做有效。但我移动了组SSLOptions +StdEvnVars +ExportCertData的外部Directory,这似乎解决了问题。

相关内容