Hatena::ブログ(Diary)

Alone Like a Rhinoceros Horn

2009-07-27

さくらインターネットでプライベート PukiWiki [2] -- SSL導入編

前回の続き。なんと2年越しの続編。

前回は、さくらインターネットでプライベートな PukiWiki を実現するために、Basic認証を導入するところまでやりました。これによって、Wiki にユーザー認証をかけることができたわけですが、Basic認証の性質上、トラフィック盗聴に対しては無防備という問題がありました。

今回は、SSL の導入によって HTTPSPukiWiki を実現する手順についてのメモです。前回の手順で Basic認証は導入済みという前提で話を進めます。

1、さくらインターネットドメインに共有SSL を導入する。

共有SSL とは

共有SSL の導入方法

これにより、お使いのさくらインターネットドメインに対し https によるアクセスが可能となります。https://yourname.sakura.ne.jp/yourwiki/index.php にアクセスして確かめて下さい。

2、PukiWiki の生成するリンクを https にする。

さて、https にて PukiWiki にアクセスすることが可能となりましたが、PukiWiki が生成するサイト内リンクは相変わらず http のままです。これでは、それらのリンクへアクセスした時点で、Basic認証の情報が暗号化されないまま流れることとなり、意味がありません。

PukiWiki が生成するサイト内リンクを https://〜 にするには、pukiwiki.ini.php を以下のように編集します。(http:// を https:// に変えるだけ)

// Specify PukiWiki URL (default: auto)
$script = 'http://youname.sakura.ne.jp/yourwiki/index.php';

 ↓

// Specify PukiWiki URL (default: auto)
$script = 'https://youname.sakura.ne.jp/yourwiki/index.php';

これによって PukiWiki の生成するサイト内リンクが https://〜 になります。

後は、ブラウザのブックマークを再登録するなどして、http://〜 によるアクセスが起こらないようにすれば、ユーザー認証+HTTPS なプライベートPukiWiki の完成です。

2009-04-13

svnserve: command not found への対処@さくらインターネット

さくらインターネットレンタル鯖で個人的に管理している Subversionレポジトリに突然アクセスできなくなった。昨日まで普通にコミットできていたのに、今日朝一でコミットすると

bash: svnserve: command not found
svn: Connection closed unexpectedly

と出た。

色々調べてみるとどうもこの辺が原因らしい↓
対処法も紹介されている。

なるほど。エラーメッセージの通り、svnserve が見つからないわけだ。
$HOME/local/bin なんてとこに入れてるしな。

でもなんで昨日までは問題なかったんだろうと不思議に思って鯖にログインしてみると、

FreeBSD のバージョンが上がっていた

ああそういうことか。OS のバージョンうpにともなって sshd の設定が変わってしまったんだな。そういや、OS のバージョン上げるためのメンテやるぞって告知のメールが来てた。どうやらそのメンテが今朝行われたようだ。

というわけで、シンボリックリンクで対処。
svnserve のある $HOME/local/bin を $HOME/bin で参照できるようにすると……

Transmitting file data ......
Committed revision 626.

無事にコミットすることができた。

2007-10-29

SAKURA に vim をインストール

さてと、vim の勉強でも始めますかい。
と思ったら、さくらインターネットには vim が入ってなかったorz

どうも、/bin の方にあるのがオリジナルの vi で、/usr/local/bin にあるのが elvis ってやつらしく、vim は入ってない模様。どちらもアンドゥは一段階しかないし、:set nocompatible も受け付けないので、vim の拡張機能は使えないっぽい。

というわけで、ソースからビルドしてインストールすることに。

を参考にソースをゲット。パッチをあてて、./configure、make、make install のおなじみのコンボで無事にインストール成功。

2007-10-22

SAKURA に Emacs をインストール

昨日の続き。

結局、昨日はあの後 Emacs のインストール、CVS から Subversion への移管、さくら上に HOME 構築、までをやった。外付けHDD に Linux を入れようとしたことから始まって、そんなこんなで一日が終わってしまった。

しかし、どこからでもリモートログインして利用できる UNIX環境(FreeBSD)がまたひとつできたのは嬉しい。後は、HOME 以下の設定ファイル、site-lisp、自作プログラム、サンプルコードの類をすべて Subversion の管理下におき、どこへでもチェックアウトできる態勢を整えれば……

(゚д゚)ウマー

という感じかな。

さくらへの Emacs のインストールでは以下を参考にしました。ありがとうございます。

2007-10-21

さくらインターネットへの Subversion のインストールに成功

を参考にやってみたら無事に make install が通った。svnadmin --version も無事に表示されたので、いよいよ CVS から Subversion への移行を開始する。

同じ要領で ./configure のオプションを指定してやれば、emacs のインストールも可能なんじゃないかな。いや、emacs だけじゃなくて、自分に必要なものがあれば、好き勝手に ./configure して make して make install していけばいいだけなんではないだろうか?

そうなると、レンタルサーバー上に HOME を構築してしまって、そこへ自宅から SSH でリモートログインするようにすれば、もはやローカルの Cygwin なんて(Meadow の補助以外の用途では)要らなくなるよな。

自宅 Linux が遠のいてちょっと orz だったが、これは活路とみた。

2007-07-31

さくらインターネットでプライベート PukiWiki

自宅の Windows マシンに入れてノートとして使っていた PukiWiki を、さくらインターネットレンタルサーバに移転した。認証まわりがなんだかややこしかったので、作業の手順をメモしておく。

ただし、ここで導入している Basic認証は、FTP や telnet と同じく、パスワードをほぼ平文で送るものなので、トラフィック盗聴に対しては無防備であることを断っておきます。(追記:2008-04-22)

追記:さくらインターネットドメインに対し共有SSL の設定を行うことで、トラフィック暗号化することが可能です。心配な人はあわせて導入しましょう。 → 続編(追記:2009-07-27)

さて、さくらインターネットPukiWiki を運用するにあたっては、

Apache とかユーザ認証の仕組みについてはまだよくわかってないので、自分でも何を書いてるのかイマイチわかってないんだが (^^;)

よって、pukiwiki.ini.php で設定する PukiWiki のユーザー認証機能は使えない(参考:続・質問箱/85)、という問題があって、

Wiki の閲覧/編集にユーザー認証を導入したければ、CGI としての PukiWiki が呼ばれる前の段階で、Webサーバー(Apache)に PukiWiki のパス(http://example.com/path/to/pukiwiki/)へのアクセスに対するユーザー認証(Basic認証)をやってもらう必要があります。

そのためには、ユーザー名とパスワードの対応を記述した .htpasswd というファイルの作成と、.htaccess という設定ファイルの編集が必要になります。

以下に、その手順を示します。

1、pukiwiki.ini.php を修正

参考:PukiWiki/CGI版PHPで動作させるには

// Specify PukiWiki URL (default: auto)
//$script = 'http://example.com/pukiwiki/';

のところをコメント解除し、自分の PukiWikiURL を設定します。(CGI版の PHP で動作させる場合は index.php までをきっちり指定しておく必要があるとのこと)

  ↓

$script = "http://yourname.sakura.ne.jp/www/yourwiki/index.php";
2、.htpasswd を作成

参考:.htaccessでアクセス制御する - ◎ ディレクトリにパスワード制限かけたい

htpasswd コマンドで .htpasswd ファイルを作成します。

PukiWiki のディレクトリに .htpasswd ファイルのひな形があるので、-n オプションを使って出力した結果をコピペしてもいいでしょう。自分の場合は、Meadow で Cygwin のシェルを立ち上げて、

$ htpasswd -n myname

とやってパスワードを入力し、出力されたものをひな形の方にコピペしました↓(最後の行)

# Apache AuthUserFile sample (See .htaccess)
#
# $Id: .htpasswd,v 1.3 2005/04/29 11:51:31 henoheno Exp $
# Copyright (C) 2005 PukiWiki Developers Team
# License: GPL v2 or (at your option) any later version
#
# NOTE:
#  * user:password
#  * Correct permission of this file 644(or 604)
#  * Prohibit direct access to this file (See .htaccess)
#  * You can use md5-plugin 'PHP/LDAP crypt' without
#    scheme-prefix, to generate password

## Sample: guest/guest(MD5 crypt), guest2/guest2(legacy crypt)
#guest:$1$diwHVvEW$0YKANlf0tAczUU01LygP/.
#guest2:0dHeae8zgzNFU

yourname:hashed_passwd

作成した .htpasswd ファイルは、ドキュメントツリー(~/www)の外側においておきます。( → 追記2)

3、.htaccess を修正、パスにユーザー認証をかける

.htaccess も PukiWiki のディレクトリにあるので、それを修正します。

## Authentication to this directory with basic-auth
## needs 'AllowOverride AuthConfig' at httpd.conf
#AuthType Basic
#AuthName      "Authentication required"
#AuthUserFile  /path/to/.htpasswd
#AuthGroupFile /dev/null
#Require       valid-user

となってるので、この部分のコメントを解除し、AuthUserFile に先ほどの手順で作成した .htpasswd ファイルをフルパスで指定します。

# Authentication to this directory with basic-auth
# needs 'AllowOverride AuthConfig' at httpd.conf
AuthType      Basic
AuthName      "Authentication required"
AuthUserFile  /path/to/.htpasswd
AuthGroupFile /dev/null
Require       valid-user

以上です。

これで index.php にアクセスすると Apache にユーザー名とパスワードを求められるようになり、プライベート仕様の PukiWiki となります。

追記1

トラフィック盗聴に対抗するためには通信経路の暗号化が必要です。さくらインターネットドメインに対し共有SSL の設定を行うことで、トラフィック暗号化することが可能です。心配な人はあわせて導入しましょう。 → 続編(2009-07-27)

追記2

.ht で始まるファイルにはアクセスできないようになっている(403 Forbidden)ので、.htpasswd が直接指定されてダウンロードされてしまう心配はないが、念のため .htpasswd はドキュメントツリー(~/www)の外側に置いておく。(2008-04-22)

参考
Apacheハンドブック

Apacheハンドブック