apacheダイジェスト認証設定

さくらVPSに個人用git環境とレポジトリを作成。
ついでにgitwebの導入をしたけども、公開するのも恥ずかしい。
てか公開するなら最初からgithubを使います。

gitwebとかっこいい名前はついてても、所詮はCGI
ということでapacheの認証だけ行うことにした。
環境はDebian 6です。

今回は、basic認証ではなくdigest認証。
basic認証は平文でパスワードを送ってるから危ないとか何とからしいので。

設定ファイル編集

まずは、gitwebの設定ファイルを確認

$ dpkg -l | grep gitweb
ii  gitweb  1:1.7.2.5-3  fast, scalable, distributed revision control system (web interface)
$ ls -la /etc/apache2/conf.d/gitweb

次に中身の編集

<Directory /usr/share/gitweb>
  Options FollowSymLinks +ExecCGI
  AddHandler cgi-script .cgi
  # ここから追記分
  AllowOverride None ← 書かなくていいと思う
  AuthType Digest   ← ダイジェスト認証使う
  AuthName "gitweb"  ← 認証名 名前は自由
  AuthUserFile /etc/apache2/.htdigest ← 認証ユーザが記載されたファイル あとで作る
  Require valid-user ← AuthUserFileで指定した人のみにアクセス制限
</Directory>

ユーザの追加

AuthUserFileの作成とユーザの追加をする

$ cd /etc/apache2
$ sudo htdigest -c .htdigest "gitweb" akihiro_ob
Adding password for akihiro_ob in realm gitweb.
New password:
Re-type new password:
$ ls /etc/apache2/.htdigest 
/etc/apache2/.htdigest

これで勝手に作成と追加されました!

ちなみに-cオプションは最初のみ。
追加する際は不要です。

$ sudo htdigest .htdigest "gitweb" testuser
Adding user testuser in realm gitweb
New password: 
Re-type new password: 
$ cat .htdigest| grep -n testuser
2:testuser:gitweb:05bae855755924538c87393873116b01

消すときはファイルから一行削除するだけ。

モジュール設定

設定というか、使う使わないの話。
何もしてなければbasic認証が動いているので無効にする。
その後、ダイジェスト認証モジュールを有効にする。
最後にapacheの再起動。

$ sudo a2dismod auth_basic
$ sudo a2enmod auth_digest
$ sudo /etc/init.d/apache2 restart

あとは、gitwebにアクセスするのみ!

参考

Apache2でDIGEST認証を使う
http://uturo1.nevernothing.jp/apache2digest/