SSL 클라이언트 인증서 유효성 검사를 사용하는 레거시 웹 서비스를 컨테이너화하고 있습니다. Apache 2.4 컨테이너와 PHP 7.4 FPM 컨테이너가 있습니다.
내 아파치 가상 호스트 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>
....
index.php
<?
print_r($_SERVER);
?>
<html>
....
<a href=go.php><img name=go src=="go.png" alt="GO!"></a>
....
</html>
Go.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
with 값을 인쇄 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
더니 문제가 해결된 것 같았습니다.