スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Digest認証を使ったアクセス制限

Webページのあるディレクトリ配下にパスワードでロックをかけたい場合、Basic認証を使ってきましたが、盗聴に弱いという弱点があります。この面を改善したのがDigest認証です。設定方法もBasic認証とほぼ変わらないですし、ちょっとつまずいた点があったのでメモしておきます。

続きを読む

スポンサーサイト

tag : Basic認証 Digest認証 .htaccess apache

.htaccessを使ったアクセス制限方法(Basic認証)

InternetExprolor等でBasic認証が施されているページにアクセスしようとすると、下図のダイアログが表示され、ユーザ名とパスワードが要求されます。
サンプル

基本認証画面

これは、仲間内にだけ公開したい掲示板サイトなど、特定の人間だけがアクセスを許可したい場合などに用います。Webアプリケーションを作成して、認証機能を持たせることもできますが、Apache上ではこの認証機能を簡単に実現することができます。

続きを読む

tag : .htaccess AllowOverride htpasswd Basic認証

Webサーバー間通信内容暗号化(Apache+mod_SSL)

1.mod_sslインストール
[アプリケーション] - [ソフトウェアの追加/削除]でパッケージマネージャを起動。

「1:mod_ssl-2.2.3-22.el5.centos.2.i386」にチェックを付けて適用ボタンを押下する。

パッケージマネージャ

2.サーバー用証明書有効期限の変更
端末よりディレクトリの移動。

# cd /etc/pki/tls/certs/


サーバー用証明書有効期限を1年から10年に変更する為、以下のコマンドを入力する。

# sed -i 's/365/3650/g' Makefile



3.サーバー用秘密鍵・証明書作成
同ルートから以下のコマンドを入力する。

#make server.crt


umask 77 ; \
/usr/bin/openssl genrsa -des3 1024 > server.key
Generating RSA private key, 1024 bit long modulus
.................++++++
............++++++
e is 65537 (0x10001)
Enter pass phrase: ← 任意のパスワードを応答※表示はされない
Verifying - Enter pass phrase: ← 任意のパスワードを応答(確認)※表示はされない
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key server.key -x509 -days 3650 -out server.crt -set_serial 0
Enter pass phrase for server.key: ← 上記で応答したパスワードを応答※表示はされない
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP ← 国名応答
State or Province Name (full name) [Berkshire]:Tottori ← 都道府県名応答
Locality Name (eg, city) [Newbury]:Kawasaki ← 市区町村名応答
Organization Name (eg, company) [My Company Ltd]:mitchy.com ← サイト名応答(なんでもいい)
Organizational Unit Name (eg, section) []: ← 空ENTER
Common Name (eg, your name or your server's hostname) []:mitchy.com ← Webサーバー名応答
Email Address []:webmaster@mitchy.com ← 管理者メールアドレス応答

4.サーバー用秘密鍵からパスワード削除
Webサーバー起動時にパスワードを要求されないようにするため、サーバー用秘密鍵からパスワード削除

# openssl rsa -in server.key -out server.key



5.ssl.confの編集
ファイル「/etc/httpd/conf.d/ssl.conf」を開く。
以下の項目を変更する。

SSLCertificateFile /etc/pki/tls/certs/server.crt

SSLCertificateKeyFile /etc/pki/tls/certs/server.key


6.Apacheの再起動
[システム] - [管理] - [サービス]からサービスの設定を起動し、httpdの項目を再起動させる。

6.ポート443番のOPEN
ルーター側の設定でポート443番をOPENする。
ポートチェック【外部からポート開放確認】」からポート443を指定してポートが開いているかチェックをする。
ファイアウォールを設定している場合は、
[システム] - [管理] - [セキュリティレベルとファイアウォールの設定]を選択し、セキュリティレベルの設定画面を開く。
Secure WWW(HTTPS)の項目にチェックを付け、OKボタンを押下する。
WS000166.jpg

7.アクセスの確認
https://~でアクセスしてページが開けばOK。

Apacheのhttpd.confのAllowOverride指定子

上述のAccessFileName指定子で指定されたファイルが各ディレクトリで 見つかった時、どのような設定について上書きを許すかをキーワードで 記述します。キーワードは複数指定する事も出来ます。

ここで言う指定されたファイルというのは、「.htaccess」などを指します。

指定方法は、httpd.confにあるように以下の通りです。

AllowOverride キーワード


キーワードには次のものがあります。

キーワード 意味
None 上書きを許可しません。
ALL 全ての種類の設定について上書きを許可します。
AuthConfig 認証に関する設定について上書きを許可します。
Limit ホスト名やIP addressによるアクセス制御の上書きを許します。
Options Options指定子で設定する機能について上書きを許可します。
FileInfo ディレクトリ表示の設定について上書きを許可します。

tag : httpd.conf

1台のマシンで複数サイト運営(Apacheバーチャルドメイン)

自宅Webサーバは自由度が高すぎる為、なにかとトラブルが付き物で大変ですが、メリットも多いにあるわけです。今回試みようとしている1台のマシンで複数サイト運営がまさにそのメリットだと言えます。

※ここでは下記リンクの内容を設定済みの前提で話を進めます。
情報発信は自宅から!低予算自宅サーバ奮闘メモ 無料ドメインを取得してみる
情報発信は自宅から!低予算自宅サーバ奮闘メモ まずはApacheを動かしてみる

ここで言う、複数サイトとは、複数のドメインでそれぞれのページを管理することを言います。まぁ、最悪1つのドメインでもトップページから複数種類のページに分岐するようしておけば、複数サイト運営とも言えますが、やっぱりドメインを別々に扱いたいものです。

共有型レンタルサーバを借りて、複数サイトを運営する場合は、サイト数分別々の契約が必要になるでしょう。そうなるとランニングコストも2倍以上になります。自宅サーバの場合はApacheの設定を変えるだけで複数ドメインで複数サイトを実現することができます。

イメージとしては下図のようになります。



マシンとしては1つのIPアドレスが割り当てられていますが、Apacheの設定を変更することでApacheがドメインを判定し、該当フォルダのサイトを表示させます。

その為、1つのサイトに対して、アクセス数が激増した場合、マシンもApacheも1台なので他のサイトの処理も影響を受けます。とは言え、現状ほとんどアクセスはありませんし、このような懸念をするにはまだまだ早いスペックを備えております。人気サイトを作ってしまった暁にはうれしい悲鳴ということで、マシンスペックは検討したいと思います。

ただし、懸念材料はマシンだけでなく大域幅も考慮しなければなりません。回線がADSLの為、ひっきりなしにアクセスされた場合は回線を光に変えたいと思います。

では具体的にどうやって行うか以下に記載します。

続きを読む

テーマ : UNIX/Linux
ジャンル : コンピュータ

祝!Webサーバひと段落

自宅サーバってかなり愛着湧きますけど、
自由すぎるってかなり大変です。僕も大人になったのかなぁ。

前回の記事の時点で、Webサーバとしては完成していたんですけど、

情報発信は自宅から!低予算自宅サーバ奮闘メモ 無料ドメインを取得してみる

このご時世、Webデザイナーでも無い限り、更新する毎にHTMLをごりごり触って、Webを作るなど大変なので、(昔やりましたけど・・)
Movable Typeを入れることにしました。

昔のMovable Type3とかは初心者でも、ごりごりカスタマイズができたんですが、Movable Type4は大人向けになっており、どこにスタイルシートがあるのか?どこに、モジュールがあるのか?探すのが大変です・・。その分、下記マニュアルをこしらえて、部品化しやすくしてるんでしょうね。きっと。

Movable Type 4 ドキュメント

おかげで、納得のレイアウトにするまでに、半日かかりました。そして、先程ようやく旧ブログから下記自宅サーバへ移転が完了しました。( ̄(ェ) ̄;;) 

↓癒し系のテンプレートにしました。
MTブログ完成

Dojo Toolkitで行うAjax Webアプリケーションサンプル

しかも、上記テンプレートを作ったやつ(たぶん、どっかの外人)、スタイルシートに変な記載をしてるもんだから、まともに動かねー。

その修正にも追われ、すっかり日が暮れてしまいました。
Dojoに関する勉強も、記事も投稿できず、日曜日が終わろうとしています・・。
徐々に更新していきます・・。

これで、自宅サーバ本格始動です。

テーマ : UNIX/Linux
ジャンル : コンピュータ

CGIが動かなねー。500 Internal Server Errorって何だ!?

ここまで順調すぎるくらいに、進めてきた自宅サーバですが、ここへきて大ハマりです。
一応、前回まででWebページは見れるようになっていたのですが、

情報発信は自宅から!低予算自宅サーバ奮闘メモ 無料ドメインを取得してみる

CGIが動いてくれません。
動かない手順は次の通りです。

Windowsマシンより、秀丸で、以下の簡単なtest.cgiを作成。
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n";
print "<title>テスト</title>\n";
print "</head>\n";
print "<body>\n";
print "CGIテスト\n";
print "</body>\n";
print "</html>\n";


FTPで下記パスへアップロード。

/var/www/html



ブラウザで確認↓
500 Internal Server Error

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.



な、なぜ??

/etc/httpd/conf/httpd.confの設定は↓このサイトを参考にさせていただきました。
Webサーバー構築(Apache) - CentOSで自宅サーバー構築

まぁ、ネットで調べてみると同じようなトラブルに巻き込まれている人は多いようですが、すぐに解決しませんでした。以下にあるある解決方法を記載しておきます。


あるあるパターン1
CGIファイルの先頭に記載している、
#!/usr/local/bin/perl と指定した場所に perl がない。

ここに関しては、端末より下記コマンドで確認できます。

whereis perl


何十回も確認しましたが、正しいパスでした。

あるあるパターン2
/etc/httpd/conf/httpd.confの設定に不備がある。
CGIを動かすには、上記ファイルを正しく設定してやる必要があります。上記のサイトの設定を忠実に守れば問題はありません。何回も見直しましたが、漏れや間違いはありませんでした。

あるあるパターン3
パーミッションの変更忘れ。
アップロードしたCGIファイルのパーミッションを以下の変更してやらなければなりません。

chmod 755 /var/www/html/test.cgi


何回かに1回忘れてました。

あるあるパターン4
CGIスクリプトファイルの改行コードがCR+LFになっている。
これは、Windows上の秀丸でCGIファイルを作成したときに、やりがちなミスで私もこのミスをやってました。コレだ!と思って秀丸で保存するときに、改行をLFにしてやればOKなのですが、それでも解決しませんでした・・・。

このパターン4には、もう一つあり、FTPクライアントでLinuxにファイルを転送する際にアスキーモードで送る必要があるそうです。ここも、FTPクライアントがアスキーモードになっていることを確認して転送しましたが、解決しませんでした・・・。

で、結局何が原因だったかというと、FTPサーバがアスキーモードになっておらず、サーバがバイナリモードで受け取っていたために、CGIが正しく実行されてなかったようです。わかるか!!そんな設定!!

ネットには、同じように苦しんだ方がいらっしゃったようで、おかげさまで解決できました。
具体的に申しますと、
CentOSのFTPサーバは、vsftpdです。このアプリの設定は/etc/vsftpd/vsftpd.confという場所に格納されており、このファイルはデフォルトで、アスキーモードが無効になっているようです。

#ascii_upload_enable=YES
#ascii_download_enable=YES



上記「#」をはずして、

ascii_upload_enable=YES
ascii_download_enable=YES



アスキーモードを有効にしてやり、vsftpdを再起動し、Windowsから再度転送してやれば、
うまくいきました↓
成功例


また、CGIのエラーが発生している場合、

/etc/httpd/logs


にある「error_log」ファイルにエラー内容を記載されているので、解決のヒントになるかもしれません。

無料ドメインを取得してみる

前回アパッチでWebサーバを公開しました。

情報発信は自宅から!低予算自宅サーバ奮闘メモ まずはApacheを動かしてみる

デフォルトでは、下記パスがWebページのトップですので、超簡単なindex.htmlファイルを作成し、Webページが見れるかどうか、試してみました。

/var/www/html



index.html
<HTML>
<BODY>
Hello html
</BODY>
</HTML>


みごと、図1のような自宅サーバの初ページが拝めました。
が、前回の続きでもあります、IPアドレスでWebを見るような奇特な人はいません・・。

初Webページ1

-図1 自宅サーバ初ページ-

今回はドメインを取得して、かっこよくドメイン名でWebページを表示させたいと思います。
過去に独自ドメインを取得した経験から、ドメイン取得は面倒かつ時間がかかると思ってましたが、無料の場合、かなりあっさり取得できます。

無料・ダイナミックDNS(DDNS)サービスを提供してくれる、ieServer.netというサイトがあるらしく、自宅サーバ向けに無料のドメインを提供してくれます。

無料・ダイナミックDNS(DDNS)サービス - ieServer.Net

さすがに独自ドメインとは違い、以下いずれかが末尾にくっつく形となりますが・・・。

dip.jp / fam.cx / jpn.ph / moe.hm / myhome.cx / or.tp / orz.hm



まぁ、無料である以上、その辺りの細かいことを気にしてちゃ・・ってことで早速、「新規ユーザ登録」をしました。まぁ、後で変更できそうなので、とりあえず、以下のドメインにしてみました。

http://ajaxlab.dip.jp/



何で上記ドメインにしたかは、以前書いた記事に書いてますけど、
暇な人だけ読んでください。
情報発信は自宅から!低予算自宅サーバ奮闘メモ 自宅でWeb公開するに至った経緯。

で、

早速、http://ajaxlab.dip.jpを入力してみたら、図2のようにみごと表示されました。

初Webページ

-図2 ドメインでWebページを表示-

しかし、ながら問題はここでは終わっておりません・・。
非固定IPアドレスであるため、このドメインに割り当てられているIPアドレスは変わる可能性があります。でも、1日たっても変わる気配がないので、とりあえず別作業にとりかかるべく、問題が発生してから対処したいと思います。

まずはApacheを動かしてみる

苦労して、自宅Webサーバを公開している方に申し訳ないのですが、CentOSでWebサーバを公開するのは、実に簡単です。

だって、もとからApacheが入っているから。

まずここではApacheを起動させ、外部からアクセスできるようにする手順を記載します。

1.CentOS内でApacheの起動を確認する
(1)インストールの確認
メニューの[アプリケーション] - [ソフトウェアの追加/削除]でパッケージマネージャを起動し、Webサーバにチェックが入っていることを確認します。(図1参照)

チェックが入っていない場合は、チェックを付け、「適用」ボタンを押下します。

Webサーバの確認

-図1 Webサーバインストールの確認 -

(2)サービス起動を行う
メニューの[システム] - [管理] - [サービス] でサービスの設定画面を起動させます。
デフォルトの場合、「httpd」サービスにチェックが入っていない為、チェックを付け、「開始」ボタンを押下します。(図2参照)

httpd起動

-図2 Apacheサービス起動 -

(3)ブラウザでApache起動を確認
これで、Apacheは起動しました。CentOS内でFirefoxを起動させ、URLに「http://localhost/」と入力すると、図3のように表示されればOKです。

CentOS内Apache起動確認

-図3 ブラウザでApache起動確認 -

2.LAN内でApacheの起動を確認する
以前も紹介したように、我が家のマシンは図4のような構成になっています。

ネットワーク構成

-図4 マシン構成 -

(1)ポートの設定
CentOS外であるWindowsマシンからApache起動を確認してやります。要するにLAN内で(Webサーバ)Apacheのポートが開いていることを確認します。

私のCentOSではファイアウォールを設けている為、ポートは開いておりません。その為、メニューの[システム] - [管理] - [セキュリティレベルとファイウォールの設定]を選択し、 セキュリティレベルの設定画面より、信頼できるサービス「WWW(HTTP」にチェックを付けOKボタンを押下します。(図5参照)

ポートの設定

-図4 ポートの設定 -

これで、WindowsマシンからでもApacheの起動が確認できます。

(2)Windowsマシンからブラウザで確認
Windowsマシンでブラウザを起動し、httpに続いてCentOSのIPアドレスを入力すれば、図3と同様の画面が表示されるはずです。

3.インターネットでApacheの起動を確認する
現段階では、図5のようにインターネット上からはアクセスできません。ためしに、下記以下のサイトから、host名にCentOSのIPアドレスを入力してポートチェックをしても、ポートが開かれていませんと表示されます。

ポートチェック【外部からポート開放確認】


-図5 ポートの設定 -

まぁ、当たり前の話なのですが、CentOSのIPアドレスはローカルなIPアドレスでインターネット上に公開されているものではありません。ただし、図5に示すブロードバンドルータならアクセス可能です。
ブロードバンドルータのIPアドレスを確認するには、以下のサイトに表示される、”現在接続している場所(現IP)”が示す値です。

確認くん(VIA the UGTOP)

このブロードバンドルータのIPアドレスは:60.44.62.101

プロバイダから振られているアドレスで、固定なIPアドレスではありません。とりあえず、今日はこのIPアドレスで話を進めたいと思います。

(1)ブロードバンドルータの設定を行う
もちろんですが、上記IPアドレスはブロードバンドルータのアドレスであって、CentOSのアドレスではありません。なので、ブラウザで上記アドレスを入力したところで、Apacheの起動は確認できません。図5のオンレジ矢印のようにしてやるには、ブロードバンドルータの設定を変更してやる必要があります。
※ブロードバンドルータの設定方法は各ルータの説明書を参照してください。corega製のCG-BARMXのブロードバンドルータについて解説します。設定の理論としては、他の製品でも同じではないかと思います。

corega製のCG-BARMXの場合、ブラウザでローカルIPアドレスを入力してやると設定画面になります。
設定画面トップ

-図6 設定画面トップ -

その中でバーチャルサーバの設定で、サーバWebの要求があった場合に、接続先をCentOSに設定してやります。(図7参照)

バーチャル サーバーの設定

-図7 バーチャルサーバの設定 -

(2)ブラウザで確認
ブラウザを起動し、上記ブロードバンドルータのアドレスを入力してやれば、図8のようにApacheの起動が確認できます。

インターネット上でApacheの起動確認

-図8 インターネット上での確認 -

不安だという方は、先程のポートチェック【外部からポート開放確認】で、IPアドレスを入力して確認してみてください。

これで、外部からWebサーバとして見れるようになりましたが、IPアドレスでWebを見るような奇特な人はいませんし、このIPアドレスは可変の為、一定ではありません。その為、次回はドメイン名でWebサーバを見れるようにしたいと思います。

自宅でWeb公開するに至った経緯。

まぁ、どうでも良い話なんですけど、悩みに悩んでWebサーバを構築することに踏みきりました。
その経緯をメモしておきます。

世に出ている無料ブログサービスは、かなり高機能化されてて、しかも自由度が高いです。

現在使用しているこのFC2ブログは優れもので、ブログ容量1GBで、しかも、画像以外に、htmlファイルやJavaScriptファイルなどもアップロードできます。

少し前なら、有料のレンタルサーバを利用して、Movable Typeなどをインストールし、不必要に自由度の高いブログを構築してました。そのカスタマイズ性があだとなって、本編の更新自体が怠るってこともしばしば・・・。なので、最近では無料のブログサービスばかりを利用しています。しかも、格安の有料版にはなかなか無い、1GBとというのは、かなりうれしい容量です。

が、

さすがに、自作Webアプリケーションを紹介するブログを書こうと思った際に、やっぱり、限界を感じました。紹介するからには、Webアプリを動かしたい・・。単にJavaScriptを動かしたいだけならできますが、今回、JavaScriptライブラリのDojoを使いたい・・。Dojoのライブラリはフォルダに複数JavaScriptファイル入っており、これを一個一個アップロードするのも大変ですし、フォルダ構成が崩れることは必至で、ファイルのみでDojoライブラリが動いてくれる保障はありません・・・。

ということで、無料のブログサービスをあきらめ、有料版レンタルサーバを考えました。

Movable Typeをインストールする手間を考えても、サーバ維持は業者がやってくれるので、Movable Typeさえ入れてしまえばこっちのものだと思ってました。

ただ、次のような考えが頭をよぎりました。

・なんの為に、CentOSをインストールしたか?
・今後公開するWebアプリが増えれば、格安サーバでも経費がかさむ
・地図アプリを考えた場合PostgreSQLを使いたい等、サーバ環境の自由度が限定される。
・せっかく持っている環境を活かす方が今後のためにメリットがあるのでは?

まぁ、サーバ業者を探せばいくらでもあるんですけど、
お金で解決するより、あえて手間のかかる自宅サーバで公開することにしました。

ということで、まずは自宅サーバでWebサーバ化させます。
そのお話は次回に。
プロフィール

白鯖

Author:白鯖
安い寄せ集めの部品で構築し、CentOS5をインストールしました。主に、Webサーバ、アプリケーションサーバとして運用中。ハードの知識はあまり無いプログラマですが、全部自前で作るのは、手間はかかるけど、レン鯖より面白いです。

ハードウェア構成

カテゴリー
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
Max TDP控え目なCPU
安くて静音なクーラー
検索フォーム
ユーザータグ
RSSフィード
はてな
スポンサード リンク
おすすめ書籍
twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。