Windows上のApacheでオレオレSSLするメモ

正当性云々を抜きにして単純に自分用サーバをSSL対応させる方法のメモ。

事情あって今回はWindows上でApacheを動かしているので、手順の中にはもしかしたらWindowsに依存する部分があるかもしれない。

手順概要は

  1. 必要なソフトを入れる
  2. 証明書の作成
  3. Apacheの設定

手順の意味の簡単な説明

SSLを使うにはサーバが正当であるという証明書と、データ暗号化のための鍵が必要だ。それらのファイルを作成するためにOpenSSLを使う。実際の世の中では証明書リクエストをVeriSignなどの会社に申請し、お金を払って証明書をもらうのだが、今は勝手に自分でVeriSignみたいな役割もしてしまう。

必要なソフト

バージョンは2007/11/11現在の最新版。インストールは適当に。

OpenSSL 0.9.8g
証明書の作成用。公式サイトにはソースしかないが、有志がWindowsバイナリを公開している。
Shining Light Productions – Win32 OpenSSL

ActivePerl 5.8.8
OpenSSLを使う上で必要。既にPerlが動くなら入れなくていい。
このページにはなにやら値段が書いてあるがDLは無料。
ActiveState – Store – ActivePerl

証明書作成(1)サーバ用秘密鍵作成

C:OpenSSLにインストールしたとして

C:OpenSSLbin> openssl genrsa -out server.key 1024
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
..................++++++
............++++++
e is 65537 (0x10001)

これでbinフォルダにserver.keyが出力される。

証明書作成(2)証明書リクエスト作成

C:OpenSSLbin>openssl req -new -key server.key -out server.csr

リクエスト作成のために情報を入れてもらいます、と言われ、いくつかの入力をさせられる。基本的には適当に入れていけばいいが、
CommonNameにはサーバがアクセスされるホスト名を正確に入力。
Challenge passwordでは何も入力せずにEnter。
Optional company nameにも何も入力せずにEnter。

今回はこんな感じ。

Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Kyoto
Locality Name (eg, city) []:Kyoto
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Oddwit
Organizational Unit Name (eg, section) []:Oddwit
Common Name (eg, YOUR name) []:www.oddwit.com
Email Address []:info@oddwit.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

これでbinフォルダにserver.csrが作成される。

証明書作成(3)証明書作成

C:OpenSSLbin> openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
Loading 'screen' into random state - done
Signature ok
subject=/C=JP/ST=Kyoto/L=Kyoto/O=Unikaji/OU=Unikaji/CN=202.11.205.142/emailAddress=info@uni-kaji.com
Getting Private key

-days 3650は証明書の有効期限。別に短くしておく必要はないので10年とかでいい。
これでbinフォルダにserver.crtが作成される。

Apacheの設定

server.crtとserver.keyをApacheのconfcertsに移動。
confssl.confに以下を書き込む(ない場合は近くにあるサンプルファイルをコピーして作成)。

SSLCertificateFile conf/certs/server.crt
SSLCertificateKeyFile conf/certs/server.key

その下にDocumentRootなどの設定をするところがあるが、そこはhttpd.confの設定に応じて設定する。

Apacheを再起動して作業は完了だ。

その他もろもろ

SSLはデフォルトでポート443を使うので、ファイアウォールに穴を穿っておくこと。

これでhttps://…にアクセスできるはずだ。ブラウザに証明書がズルいとかヤバいとかがちゃがちゃと文句を言われるが華麗にスルーしてあげよう。

参考にしたサイトは主にこのあたり。
Apache + SSL
OpenSSL for Windows
OpenSSLのインストール
SSL用証明書の作成(Windows編)

Categories: HowTo's, Tips and Tricks | Tagged , , | Leave a comment

サーバサイド処理を活用してCSSを書きやすく

このCSSを

ul.menu   { list-style: none; }
ul.menu li { padding-left: 2em; }

こう書けたら?

ul.menu {
    list-style: none;
    li {
        padding-left: 2em;
    }
}

CSS Server-side Pre-processorを使えば、こんな風に見た目と意味が一致したCSSが書けてしまうようだ。

独自文法のCSSをサーバサイドでパースして、通常のCSSに落とし込もうというアイデアである。

このライブラリを使えば、ネスト記法の他にも定数を宣言したり、サーバサイドで別のCSSファイルをimportしたりできるようだ。

定数を使えば、色や幅など共通の値をいちいち置換してまわる手間が省ける。

@server constants{
    colorOne: #336699;
    colorTwo: #3366CC;
}

.foo { color:colorOne; background-color:colorTwo; }
.bar { color:colorOne; background-color:colorTwo; }

importはHTTPリクエスト数の大幅な削減につながる。

@server import url(stylesheetName.css);

普通のCSSと非常に近い文法で書けるのが良い感じだ。しかもmod_rewriteを使うので、あたかも普通のCSSであるかのようにHTMLからlinkするだけで使えてしまうようだ。

PHP、Apache、mod_rewriteで動くので、普段その周辺で開発しているなら試してみてもいいかもしれない。

Categories: Ideas and Products | Tagged , | Leave a comment

CodeIgniterのファイル名はCase-Sensitive

久々にCodeIgniterでハマったのでメモ。

ローカルのWindowsで開発していたアプリを運用のためにLinuxのサーバにアップしたところ、訳のわからないところでエラーが出てまったく動かない。潜ってみると、原因はあるコンフィグファイルが大文字小文字の違いで正しくincludeされていなかったためだった。

たとえば自作ライブラリのクラス名を
CustomParser
とした場合、そのライブラリのファイル名は
application/libraries/CustomParser.php
コンフィグファイルを使うならそのコンフィグファイル名は
application/config/CustomParser.php
と、大文字小文字を完全に一致させる必要がある。

なおWindows環境ではファイル名はcase-sensitiveではないようなので、幸か不幸か問題なく動いてくれる。

Categories: HowTo's, Tips and Tricks | Tagged , , | Leave a comment

EclipseでJavaコードを実行すると「Could not find the main class. Program will exit.」

症状

EclipseでJavaのプログラムをビルド・実行しようとすると

Could not find the main class. Program will exit.

とメッセージがポップアップし、さらにコンソールでは

java.lang.UnsupportedClassVersionError: FooClass (Unsupported major.minor version 50.0)

と怒られる。

コマンドプロンプトから直接コンパイルして実行するとうまくいく。

解決方法

Windowメニュー→ PreferencesJavaCompilerCompiler Compliance Level を変えてみる。

Categories: HowTo's, Tips and Tricks | Tagged , , | Leave a comment

Webデザイン、七つのism

Vitaminの記事が面白かったので紹介。

Web Design-isms: 7 Surefire Styles that Work

昨今のWebにあふれるSweetなデザインを七つの流派に分けて紹介している。

1. コラージュ派(Collagism)

2. 装飾派 (Ornamentalism)

3. 光沢派 (Glossism)
最近はこれが大流行している模様。

4. 文字派 (Wordism)
タイポグラフィー。

5. 未来派 (Futurism)

6. ミニマリズム (Minimalism)
ん~、いいね。

7. レトロ派 (Retroism)

七つというのが何かとても「それは誰が決めたんだ」と思わせてくれるが、参考にはなる。
元記事にはもっとスクリーンショットとリンクがあります。

Categories: Ideas and Products | Tagged | Leave a comment