Apache-2.4
PHP SERVER SSL_CLIENT_CERT 在導航頁面時消失
我正在容器化使用 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 的值時
_SERVER
,print_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
這似乎解決了問題。