Windows版 Apache 2.4 でBasic認証が出来なかった件(解決済み)


 初投稿。まだ Markdown にも慣れていないため Qiita の使い方、勉強します。

 2015年10月現在、ApacheのWindows版はソースコードのみで、バイナリは公式サイトから配布されていない。(2014年末からその方針の模様)
 Windows版Apache インストールに関する検索は、軒並み10年以上前の記事であり、路頭に迷う人もいるだろうなぁと思った次第。


 解決したので、以下に要約を。

  • 公式サイトに紹介されている有志のページからバイナリをダウンロード
  • htpasswd.exe では正常な暗号化が行われないため、http://www.htaccesstools.com/htpasswd-generator-windows/ で作成した内容を使う
  • .htaccess のパスワードファイルについてはフルパスで書く

【詳細】
 バイナリ版については、有志がコンパイルし配布しているサイトが、Apache公式サイトで紹介されているので、そちらから選びダウンロード。
  http://www.apachelounge.com/download/
 執筆時点の最新版を導入するにあたり、VC14をインストールする必要があるが、このあたりはインストーラーが促してくれるため、あまり迷うことはないだろうから省略。
 僕は見てないけど、こちらが参考になるかもです。
  https://www.youtube.com/watch?v=LL2HXgxk6-Q

C:\Apache24 というフォルダにインストールし、サービスとして稼働させるべく、以下のコマンドを実行。

C:\Apache24\bin\httpd.exe -k

 httpd.conf や、.htaccess については、.htaccess の有効化やIndexオプションなどの設定が必要になるが、そのあたりは古くから紹介されている内容と変わらないので省略。

 問題はBasic認証がスムーズに出来なかった事。

C:\Apache24\bin\htaccess.exe -c C\:aaa\.htpasswd hogehoge
New password: ********
Re-type password: ********
Adding password for user hogehoge

 ところが、作成された .htapasswd を確認すると、MD5 形式では無い…… 実際アクセスしても、HTTP500エラーが返ってきた。
 htpasswd.exe の他のオプションで、もしかしたら上手く行くかもしれないけど、以下のサイトで、生成した内容で上手く行った。

 http://www.htaccesstools.com/htpasswd-generator-windows/

 そして .htacess には以下の様にフルパスで、.htpasswd の場所を記述AuthUserFile C:\aaa\bbb\.htpasswd

 これにて解決。

 実は、Windows だけどシンボリックリンクを使ってディレクトリ構築をしている部分があるので、その点が影響していた可能性もある。だけど、htpasswd.exe の生成内容は明らかに違っていたからなぁ……

 精査できたら追記します。


 小規模ながら、ファイルサーバーとしてブラウザからでもアクセスできるようにしておきたいため、FTPSの導入だけでなく、Apache でファイルダウンロードが可能なサーバーを構築した。
 Linux で構築すれば良いじゃないかという声も聞こえてきそうだが、扱っているファイルには日本語ファイル名が多く、ファイルコピーなどをSSHでコマンドレベルで行うのはちょいと不便。Linuxで運用していた時期もあったが、Windows版しか出ていない(もしくは安定的に動いてくれない)他の常駐系ソフトも使いたいので、Windowsに戻し稼働させることにした。

 開発だったら、仮想化でLinuxを使おうという風潮は重々承知しているけど、このような使い方をしている人も未だに居るということで。