htpasswdで8文字以上のパスワードを設定する
先日これで軽くハマったので備忘的に。
Apacheでベーシック認証を行う場合、「htpasswd」コマンドで
パスワードファイルを作成します。
8文字以上のパスワードを付けたい場合は、「-m」オプションを付けて、
パスワードの暗号化アルゴリズムをMD5にする事。
例: # htpasswd -c -m [パスワードファイル] [ユーザー名]
理由は何も指定しないとデフォルトの暗号化アルゴリズムに
cryptが使われるから。
頑張ってソースコードを見てみました。
(httpd-2.2.17/support/htpasswd.cのmkrecord関数内)
204 #if !(defined(WIN32) || defined(NETWARE))
205 case ALG_CRYPT:
206 default:
207 if (seed_rand()) {
208 break;
209 }
210 to64(&salt[0], rand(), 8);
211 salt[8] = '\0';
212
213 apr_cpystrn(cpw, (char *)crypt(pw, salt), sizeof(cpw) - 1);
214 break;
215 #endif
こんな感じになっておりました。
多分ここでいいと思いますが・・・。
main 関数内で初期値として、case文評価で使われている変数「alg」が
431 int alg = ALG_CRYPT;
となっていたし。
今日はこんな所で。