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;
となっていたし。
今日はこんな所で。