web-dev-qa-db-ja.com

SSLを介したApache名前ベースの仮想ホストを使用したNTLM認証

私はApacheサーバーを介して前面にある開発環境を持っています。このApacheサーバーには、グループアクセスを使用してWebページを表示する、ADバックエンドでのSSLおよびCentrify対応のNTLM認証/承認が必要です。この環境を使用するプロジェクトは複数あるので、仮想ホスティングを設定します。これにより、各プロジェクトが特定のApacheモジュールを使用して独自の仮想ホストを変更できるようになります。 Webファイルは/ var/www/project1にあります;/var/www/project2;等..

* .domainがApacheサーバーを指すようにDNSを適切に構成し、altDNSNameフィールドに* .domainが設定されたワイルドカードSSL証明書を既に設定しています。

問題はNTLM認証部分です。

ブラウザで https://hostname.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のローカルイントラネットゾーンにあり、network.automatic-ntlm-auth.trusted-urisおよびnetwork.negotiate-auth.trusted-uris設定はFirefoxで正しく設定されています。

Centrifyディレクティブを削除すると、名前ベースの仮想ホストが期待どおりに機能するため、NTLMの問題に絞り込みました。各仮想ホスト内にDirectoryタグを配置しようとしました。また、Locationタグを使用しようとしましたが、前進することができませんでした。

2
mgriffin

期待どおりに機能する2つのしっかりと分離されたVirtualHostを作成することから始め、その後、段階的な変更によってハイブリッドの種類に戻ります。

2つのVirtualHostが次のように解決されると思います。

<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>

だから私はそのようなものをテストし、次にそれらをお互いのサブディレクトリから移動し、どのディレクティブが競合しているかを確認します

0
Tom H

さらに調査したところ、Apacheの構成に問題はありませんでした。ブラウザがNTLMを通過し、Apacheが受信しているように見えますが、Centrifyはそれを適切に検証していません。ここで、内訳がどこにあるかを把握する必要がありますが、それは別のスレッドです。

0
mgriffin