SSL通信(https)は、現代のWebサーバーには不可欠な技術です。
特に、個人情報を扱ったり決済機能を扱ったりするようなサービスを開発する場合はなおさらです。
そんなとき、SSL通信を使いますよね。
証明書は、第三者発行機関から入手する必要がありますが、有料のところがほとんどです。趣味の範囲で楽しむ程度なら、購入せず、「 自己証明書 」というものを使うので十分です。
これなら、どこにも依頼せず、無料でhttps通信を実現できます。
LinuxでWebサーバなどを立ててCGI運用している場合、
よくCGIから子プロセスを生成してCGI外プログラムを実行することは良くあると思います。
そんなとき留意しないと行けないことがあります。
Apache2系ではデフォルトのプロセスモデルが「Worker + Prefork」方式になりました。 簡単に言うと、
上記モデルが採用されたことでApacheはさらに応答速度、同時応答数の性能を増加させた
訳ですが、一方で隠された仕様変更も生じています。
CGI内でSIGALRMシグナルを使用できないというのもその代表例です。
ある特定のWebページにパスワード認証を掛けるとき、一番簡単なのものとして
Basic認証があります。しかしこれはパスワード情報をそのままの状態でサーバに送信して
しまうため非常に危険です。
これに対して、パスワードを暗号化して送信するのがDigest認証です。
タイムアウトという現象をよく自分のブラウザで見ることがあると思いますが、
これはブラウザ側で通信が時間内に完了しなかったために発生しているものであって、
サーバー側からエラーを送出しているわけではありません。
これをきちんと理解しておかないと、100MBのファイルをサーバーにCGI経由でアップロード
させようとしたらブラウザがタイムアウトとなってできません。。。
ということになってしまいます。
ですので、よくタイムアウトを理解する必要があります。
適当なURLを入力してNot Foundを出力させたりすると、Apacheのバージョンが フッターに表示されますよね。実はこのバージョンが分かると、同じバージョンの バグを調べることによって簡単にハッキングができてしまします。
webサービスで処理速度を考慮すると、一部C言語で実装していることがよくあると思います。
そんなとき、Cプログラムにバグがあったらどうやって原因を突き止めるでしょうか?
まずは、apacheのエラーログをチェックしますよね?
エラーログは、Debianなら/var/log/apache2/error.logに格納されていますので、以下のようにして
最近のエラー情報を閲覧できます。
デフォルトエンコーディングがUTF-8のシステムで、S-JISのHTMLをホスティングするときに、
いくらHTML内にDOCTYPEやmetaタグにて「charset=shift_jis」と書いてあっても文字化けする〜。
と困った経験はありませんか?