У меня есть среда разработки, которая работает через сервер Apache. Этот сервер apache требует SSL и аутентификации / авторизации NTLM с поддержкой Centrify с серверной частью AD, используя групповой доступ для просмотра веб-страниц. В этой среде будет несколько проектов, поэтому я хочу настроить виртуальный хостинг, который позволит каждому проекту изменять свой собственный виртуальный хост с любыми конкретными модулями apache. Веб-файлы будут находиться в / var / www / project1; / var / www / project2; и т.д..
У меня уже есть DNS, настроенный правильно, чтобы указать * .domain на сервер apache, а также сертификат SSL с подстановочными знаками, в котором поле altDNSName было установлено с * .domain.
Проблема заключается в части аутентификации NTLM:
Если я укажу в браузере на https: //hostname.fqdn/project1/index.html, авторизация NTLM обрабатывается именно так, как я хочу. Я считаю, что это работает с моего виртуального хоста по умолчанию.
Если вместо этого я укажу в браузере https: //project1.domain/index.html, журналы ошибок Apache сообщают, что «Пользователь не прошел аутентификацию NTLM для /index.html. Ошибка: ошибка входа в систему.
<VirtualHost ipaddress:443>
Servername "hostname.fqdn"
DocumentRoot "/var/www/"
SSLEngine on
SSLCertificateFile /path/to/cert.crt
SSLCertificateKeyFile /path/to/cert.key
</VirtualHost>
<VirtualHost ipaddress:443>
ServerName "project1.domain"
DocumentRoot "/var/www/project1"
SSLEngine on
SSLCertificateFile /path/to/cert.crt
SSLCertificateKeyFile /path/to/cert.key
</VirtualHost>
<Directory "/var/www">
Options Indexes FollowSymLinks
SSLRequireSSL
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/project1">
AuthType CENTRIFYDC
EnableBasicAuth false
EnableKerberosAuth false
EnableNtlmAuth true
Require group required_ad_group
</Directory>
Я попытался сделать это как с IE, так и с Firefox, убедившись, что * .domain находится в моей зоне локальной интрасети для IE и что network.automatic-NTLM-auth.trusted-uris и network.negotiate-auth.trusted-uris настройки в Firefox установлены правильно.
Я сузил его до проблемы NTLM, потому что, если я удалю директивы Centrify, виртуальный хост на основе имени будет работать так, как я ожидал. Я попытался разместить тег каталога внутри каждого виртуального хоста, я также попытался использовать тег местоположения, но мне не удалось добиться успеха.
После дополнительного исследования проблем с конфигурацией Apache не было. Кажется, что браузер передает NTLM, а Apache его получает, но Centrify не проверяет его должным образом. Теперь мне нужно выяснить, где здесь поломка, но это уже другая тема.
Я бы начал с создания двух отдельных виртуальных хостов, которые работают, как ожидалось, а затем вернусь к гибридному разнообразию путем пошаговых изменений.
Я подозреваю, что ваши 2 VirtualHosts решают что-то вроде этого;
<VirtualHost ipaddress:443>
Servername "hostname.fqdn"
DocumentRoot "/var/www/"
SSLEngine on
SSLCertificateFile /path/to/cert.crt
SSLCertificateKeyFile /path/to/cert.key
<Directory "/var/www">
Options Indexes FollowSymLinks
SSLRequireSSL
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/project1">
AuthType CENTRIFYDC
EnableBasicAuth false
EnableKerberosAuth false
EnableNtlmAuth true
Require group required_ad_group
</Directory>
</VirtualHost>
<VirtualHost ipaddress:443>
ServerName "project1.domain"
DocumentRoot "/var/www/project1"
SSLEngine on
SSLCertificateFile /path/to/cert.crt
SSLCertificateKeyFile /path/to/cert.key
<Directory "/var/www/project1">
AuthType CENTRIFYDC
EnableBasicAuth false
EnableKerberosAuth false
EnableNtlmAuth true
Require group required_ad_group
</Directory>
</VirtualHost>
Поэтому я бы протестировал что-то подобное, а затем переместил бы их из подкаталогов друг друга и посмотрел, какие директивы конфликтуют.