ダイジェスト認証用ファイルの作成
ダイジェスト認証用ファイルは次のコマンドで作成できる。
$ sudo htdigest -c [ファイル名] '[レルム名]' [ユーザ名]
例えば
ファイル名:.htdigest
レルム名(AuthName):RealmName
ユーザ名:Aoba
パスワード:zoizoizoi
とすると、次のようにすればダイジェスト認証用ファイルを作成できる。
$ sudo htdigest -c /var/www/html/.htdigest 'RealmName' Aoba
Adding password for Aoba in realm RealmName.
New password:zoizoizoi
Re-type new password:zoizoizoi
パスワードを変更したくなったときは上記のコマンドを再度行えばよいが、シェルスクリプトでやろうとするとパスワード入力がうまくできない。やろうと思えばやり方はあるらしいが、今回はPythonで書き換える。
ダイジェスト認証用ファイルの構成
.htdigestファイルの中身は次のような構成になっている。
.htdigest
# [ユーザ名]:[レルム名]:[MD5値]という構成になっている
Aoba:RealmName:ba31a07d0aa46ccc6c511602204e9c15
このうち[MD5値]は、文字列"[ユーザ名]:[レルム名]:[パスワード]"をMD5変換したものである。
新しいパスワードでダイジェスト認証用ファイルを再作成する
よって、新しいパスワードで.htdigestファイルを書き換えようと思ったら次のようにすればよい。
import hashlib
user = "Aoba"
realm = "RealmName"
password = "new_password"
# MD5値の算出
md5 = hashlib.md5("{}:{}:{}".format(user, realm, password).encode("utf-8")).hexdigest()
# .htdigestファイルに書き込む新しい文字列
htdigest = "{}:{}:{}\n".format(user, realm, md5)