Мы используем клиентские сертификаты для аутентификации пользователей для внутреннего сайта.
Пока мы используем SSLVerifyClient требуют в нашем конфигурационном файле Apache мы также проверяем детали в сертификате для проверки пользователя. Я недавно перешел с сервера под управлением старой версии Apache на сервер под управлением Apache 2.4.7
На предыдущем сервере переменная PHP $ _SERVER имела ключи SSL_CLIENT_S_DN_CN и SSL_CLIENT_S_DN_Email, заполненные этими данными из сертификата клиента. На новом сервере они отсутствуют. Я включил опцию SSL + ExportCertData
Конфигурация Apache, как и прежде, я выкладываю и редактирую версию ниже.
<VirtualHost 192.0.0.1:443>
DocumentRoot /dir
ServerName 192.0.0.1
SSLEngine on
<IfModule mod_php4.c>
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .html
</IfModule>
<IfModule mod_php5.c>
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .html
</IfModule>
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
ScriptAlias /cgi-bin "/dir/cgi-bin"
<DIRECTORY /dir>
OPTIONS Indexes ExecCGI FollowSymLinks
SSLOptions +StdEnvVars
AllowOverride All
</DIRECTORY>
#below all self-signed
SSLCertificateFile /ssl/cert.pem
SSLCertificateKeyFile /ssl/key.pem
SSLCACertificateFile /ssl/cacert.pem
SSLVerifyClient require
SSLOptions +FakeBasicAuth +ExportCertData +StdEnvVars
SSLVerifyDepth 1
IndexOptions FancyIndexing
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
</VirtualHost>
Интересно, может ли кто-нибудь осветить, как заполнить эти переменные в PHP. Где-то в Apache или PHP есть опция конфигурации, которую мне не хватает?
РЕДАКТИРОВАТЬ — yes / dir — это каталог, в котором мы его запускаем (выше, чем в реальном каталоге). Не уверен, почему у меня есть + StdEnvVars во второй раз в тегах DIRECTORY, чтобы быть честным 🙂
Задача ещё не решена.
Других решений пока нет …