我有一个通过 Apache 服务器前端的开发环境。此 Apache 服务器需要使用 SSL 和 Centrify 启用的 NTLM 身份验证/授权以及 AD 后端,使用组访问来查看网页。将有多个项目使用此环境,因此我想设置虚拟主机,这将允许每个项目使用任何特定的 Apache 模块修改自己的虚拟主机。Web 文件将位于 /var/www/project1 ; /var/www/project2 ;等等。
我已经正确配置了 DNS,将 *.domain 指向 apache 服务器,并且配置了将 altDNSName 字段设置为 *.domain 的通配符 SSL 证书。
问题在于NTLM身份验证部分:
如果我将浏览器指向https://主机名.fqdn/project1/index.html,NTLM 授权过程完全符合我的要求。我相信这会运行我的默认虚拟主机。
如果我将浏览器指向https://project1.domain/index.html,Apache 错误日志抱怨“用户对 /index.html 的 NTLM 身份验证失败。错误:登录失败。
<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 的本地 Intranet 区域中,并且网络.自动-ntlm-auth.trusted-uris和网络.协商-身份验证.受信任的 URI在 Firefox 中设置正确。
我已将范围缩小到 NTLM 问题,因为如果我删除 Centrify 指令,基于名称的虚拟主机将按我预期的方式工作。我尝试在每个虚拟主机内放置目录标记,也尝试使用位置标记,但未能取得任何进展。
答案1
我将首先创建两个完全独立的、按预期工作的 VirtualHost,然后通过逐步更改回到混合版本。
我怀疑你的 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>
因此,我会测试类似的东西,然后将它们移出彼此的子目录,并查看哪些指令有冲突
答案2
经过进一步调查,发现问题不在于 Apache 配置。似乎浏览器传递了 NTLM,Apache 接收了它,但 Centrify 没有正确验证它。现在我需要弄清楚问题出在哪里,但那是另一个话题了。