Apache-2.4

PHP SERVER SSL_CLIENT_CERT 在導航頁面時消失

  • December 31, 2020

我正在容器化使用 SSL 客戶端證書驗證的舊版 Web 服務。我有一個 apache 2.4 容器和一個 PHP 7.4 FPM 容器。

我的 apache 虛擬主機 conf 看起來像

...
<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 ...
?>

碼頭工人-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 並列印出 with 的值時_SERVERprint_r($_SERVER) 我可以看到[SSL_CLIENT_CERT] => -----BEGIN CERTIFICARTE----- ... -----END CERTIFICATE-----。但是,當我點擊該頁面上的連結時,該連結會將我帶到網站上的第二頁,SSL_CLIENT_CERT_SERVER. 其他 SSL 相關項目也失去了

  • SSL_SESSION_RESUMED
  • SSL_SESSION_ID
  • SSL_SERVER_A_SIG
  • SSL_SERVER_A_KEY
  • SSL_SERVER_I_DN

如何防止_SERVER配置設置在頁面之間消失?

不知道為什麼這有效。但我移動了小組的SSLOptions +StdEvnVars +ExportCertData外部,Directory這似乎解決了問題。

引用自:https://serverfault.com/questions/1048098