<Directory "/foo/bar"> AuthType Basic AuthName "web system administrator" AuthUserFile /foo/.htpasswd AuthGroupFile /dev/null require valid-user </Directory>
<Directory "/foo/bar">
Options ExecCGI FollowSymLinks
AllowOverride Options
AddHandler cgi-script .cgi
<Files admin.cgi>
AuthType Basic
AuthName "web system administrator"
AuthUserFile /foo/.htpasswd
AuthGroupFile /dev/null
require valid-user
</Files>
</Directory>
Apache httpd 2.2 + mod_authz_ldap を使用
mod_authz_ldap は rpm, yum でインストール
httpd 2.2 では設定がいくつかのファイルに分かれているので、conf.d 以下のいずれかのファイルにモジュールのロード指定を記述しておきます。
LoadModule authz_ldap_module modules/mod_authz_ldap.so
(例1) グループ名「wedge-svn」に所属するグループに対して許可
<Location /wedge-svn>
DAV svn
SVNPath /data/svn/wedge
<IfModule mod_authz_ldap.c>
AuthType basic
AuthzLDAPMethod ldap
AuthName "Product source"
AuthzLDAPServer 192.168.1.1
AuthzLDAPUserBase ou=Users,dc=osaka,dc=mki,dc=ne,dc=jp
AuthzLDAPGroupBase ou=Groups,dc=osaka,dc=mki,dc=ne,dc=jp
AuthzLDAPUserKey uid
AuthzLDAPGroupKey cn
AuthzLDAPMemberKey memberUid
AuthzLDAPUserScope base
require group wedge-svn
</IfModule>
</Location>
(例2) 正規表現で一致した URL の場合、LDAP の objectClass が inetOrgPerson のユーザに対して、SSL接続を使った認証のみ許可
<LocationMatch "/trac/[^/]+/(login|browser)">
AuthType Basic
AuthName "Trac"
SSLRequireSSL
<IfModule mod_authz_ldap.c>
AuthzLDAPMethod ldap
AuthzLDAPServer 192.168.1.1
AuthzLDAPUserBase ou=Users,dc=osaka,dc=mki,dc=ne,dc=jp
AuthzLDAPGroupBase ou=Groups,dc=osaka,dc=mki,dc=ne,dc=jp
AuthzLDAPUserKey uid
AuthzLDAPGroupKey cn
AuthzLDAPMemberKey memberUid
AuthzLDAPUserScope base
require ldap-attribute objectClass=inetOrgPerson
</IfModule>
</LocationMatch>
「require valid-user」を指定すると、LDAP に登録されているユーザすべてが許可されると思われます。
mod_authz_ldap を入れるとインストールされる、設定のサンプルファイル authz_ldap.conf には、AuthzLDAPEngine on という記述がありますが、これを指定すると、httpd 再起動時に「AuthzLDAPEngine', perhaps misspelle」というメッセージが表示されますが、これは httpd のバグのらしいです。
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=164620
LDAP のパスワード属性 userPassword のハッシュアルゴリズムが crypt(3) になっているとうまくいかないので、{MD5} または {SMD5} を使ってください。
「[[http://www.ldap.jp/openldap/v23/man/slappasswd#%E5%88%B6%E9%99%90|crypt (3) によるハッシュ化はプラットフォームに依存するので注意すること。]]」
Ubuntu の場合: sudo apt-get install libapache2-mod-auth-mysql
<Directory /var/www>
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
<IfModule mod_auth_mysql.c>
Auth_MySQL_Socket /var/run/mysqld/mysqld.sock
Auth_MySQL_Host localhost
Auth_MySQL_User apache
Auth_MySQL_Password password
Auth_MySQL_DB apache
Auth_MySQL_password_table auth
Auth_MySQL_UserName_Field userid
Auth_MySQL_Password_Field password
Auth_MySQL_Encryption_Types Plaintext
#Auth_MySQL_NoPasswd Off
AuthName "Enter your ID and password"
AuthType Basic
<Limit POST GET>
require valid-user
</Limit>
</IfModule>
</Directory>
mod_auth_mysql は mod_auth_basic よりも前にロードする必要があるそうです。
apache 2.2 の場合は、mods_enabled に対してシンボリックリンクをはる時、mod_auth_basic よりも前の順序にくる名前にしておきます。\\ (例) <code>ln -s ../mods-available/auth_mysql.load 0.auth_mysql.load</code>
httpd.conf に
AddEncoding x-gzip .gz .tgz
を記述。
ssl_engine_pphrase.c に次の記述を追加。
#ifndef PEM_F_DEF_CALLBACK #define PEM_F_DEF_CALLBACK PEM_F_PEM_DEF_CALLBACK #endif
「RSA server certificate CommonName (CN) `www.host.dom' does NOT match server name」
/etc/apache2/site-alilables/<設定ファイル> で CN を ServerName に、別名(SAN)を ServerAlias に記述します。\\ <code>ServerName www.host.dom <== 証明書の CN
ServerAlias www.sub.host.dom ⇐= 証明書の SAN(別名)</code>
次の行を /etc/apache2/ports.conf に記述する。
<code>NameVirtualhost *:443</code>