Apacheでhtpasswdやhtdigestコマンドがない環境でBASIC認証・Digest認証用のファイルを生成する
Pocket

諸事情があって、BASIC認証やDigest認証を設定する必要があった。
ただ、そのための管理ファイル含めGitで管理+Dockerでデプロイみたいなことをしていたので、htpasswdやhtdigestコマンドが無くてファイルを作るのがちょっと手間がかかるということがあった。
その時はdockerの中に入ってhtpasswdやhtdigestを実行してファイルを取り出すみたいなことをしていたけど、それらのコマンドなしで認証用のファイルが作れないかなとおもったので、ちょっと調べてみることにした。

1.BASIC認証の場合

今まで知らなかったのだが、BASIC認証で使える暗号化方式は結構あるようだ。
公式ドキュメントを見てみると、Bcryptも使えるらしい。へー…。まぁ、今回は使わなくていいか。

ただmd5にしているわけではないようなので、opensslを使ってhtpasswdでデフォルトの方式(apr1)で暗号化をする。

echo "ユーザ名:$(openssl passwd -apr1 パスワード)"
[root@BS-PUB-CENT7-01 ~]# echo "test-user:$(openssl passwd -apr1 test-password)"
test-user:$apr1$yAcnmR4J$tY1TEhaQ15q4U69hxpTS90
Sponsored Links

2.Digest認証の場合

Digest認証の場合、ユーザ名とRealm、パスワードを組み合わせてMD5でhash化しているので、md5sumで対応できる。

echo ユーザ名 Realm パスワード | awk '{print "echo "$1":"$2":$(printf "$1":"$2":"$3"|md5sum|cut -d\ -f1)"}'|bash
[root@BS-PUB-CENT7-01 ~]# echo test-user test test-password | awk '{print "echo "$1":"$2":$(pri
ntf "$1":"$2":"$3"|md5sum|cut -d\  -f1)"}'|bash
test-user:test:7595a2a4e0d31ef3bbce746b3b65822f

 

これで、htpasswdやhtdigestがなくてもBASIC/Digest認証用のファイルが作れそうだ。

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*