
Я контейнеризирую устаревший веб-сервис, который использует проверку сертификата SSL Client. У меня есть контейнер 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
с 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
настройки конфигурации не исчезали между страницами?
решение1
Не уверен, почему это сработало. Но я переместил SSLOptions +StdEvnVars +ExportCertData
внешнюю часть группы Directory
, и это, кажется, исправило ситуацию.