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>
....
インデックス
<?
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 ...
?>
ドッカー
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-----
。ただし、そのページの というリンクをクリックして Web サイトの 2 番目のページに移動すると、 がSSL_CLIENT_CERT
見つかりません_SERVER
。その他の SSL 関連項目も見つかりません。
- SSL_SESSION_RESUMED
- SSL_セッションID
- SSL_SERVER_A_SIG
- SSL_SERVER_A_KEY
- SSL_SERVER_I_DN
_SERVER
ページ間で構成設定が消えないようにするにはどうすればよいですか?
答え1
SSLOptions +StdEvnVars +ExportCertData
なぜこれが機能したのかはわかりません。しかし、グループの外側に移動するDirectory
と、問題が解決したようです。