apacheの基本認証は特定のユーザのみにWEBサイトへのアクセスを許可するために利用する機能です。 apacheの基本認証は.htpasswdというファイルにユーザとパスワードを保存します。
この.htaccessファイルを編集できる様々なperlスクリプト(CGIプログラム)が公開されていますが、 UNIX版のapacheで動作したものが、Windows版のapacheでは動作しないことがあります。これはUNIXとWindowsで暗号化の方式が異なることが主な原因です。
次のようにUNIX版のhtpasswdコマンドと使って.htpasswdファイルを作成します。今回はfreebsd 4.xとapache 1.3.xを使用しました。
% htpasswd -c .htpasswd user New password: Re-type new password: Adding password for user user % cat .htpasswd user:IUbf3xXD3kJVI
次のようにWindows版のhtpasswdコマンドと使って.htpasswdファイルを作成します。今回はWindows XPとapache 1.3.xを使用しました。
C:PROGRA~1APACHE~1APACHEBIN>htpasswd -n user Automatically using MD5 format on Windows. New password: **** Re-type new password: **** user:$apr1$Yd5.....$rRok8y/LV0XuIFVYoEBGu0
UNIXとWindowsでは作成した.htpasswdファイルに違いがあります。 UNIXよりもWindowsの方が暗号化したパスワードの文字列が長くなります。 UNIXはDES形式、WindowsはMD5形式という異なる暗号化を利用するためです。
それでは.htaccessファイルを編集するperlスクリプト(CGIプログラム)を Windowsで動作させるにはどうすればよいでしょうか。次回は Crypt-PasswdMD5-1.3 というperlモジュールを使って簡単にperlスクリプトを改造する方法をご紹介します。