高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

やっと出来た!

自宅サーバHTTPSの通信が出来るようになりました。とにかく疲れましたー(^_^;)
とりあえず、わたしが使いたいのは、SSLの「暗号化機能」だけ。よってクライアント証明書は作成しませんし、ちゃんとした認証機関の手も借りません。自己証明書というものです(^_^;)
いろいろあったので手順を以下に記します。参考のために書いておくと、うちの環境は以下の通りです。

サーバ
Vine Linux 4.1
HTTPサーバ
Apache 2.2.4(Apacheのサイトソースコードからビルド&インストールしたもの((apt-getで入れるとディレクトリ構成が変わってしまうようです)))
SSL
OpenSSL 0.9.7(OSインストール時、SSHサーバと一緒にインストールしたもの)

各ツールのバージョンによって、若干手順が変わるおそれがありますので、ご注意を。

鍵の生成

ここは参考サイト1と同じです

openssl genrsa -des3 -rand /var/log/messages -out server.pem 1024

コマンドを実行すると、パスワードを聞かれます。鍵に適用したいパスワードを2回入力してください。

CSRファイルの作成

ここも参考サイト1と同じです

openssl req -new -key server.pem -out server.csr

コマンドを実行すると、国名やメールアドレス、所属などの情報を聞かれます。適当に入力してください(たぶん英語でないとどこかでトラブルが発生すると思います)。
パスワードを聞かれたら、上で入力したものを入力してください。

CRTファイルの作成

ここまでは参考サイト1と同じです

openssl x509 -req -in server.csr -signkey server.pem -out server.crt

パスワードを聞かれたら、上で入力したものを入力してください。

起動時のパスワード入力をしないように

ここは参考サイト2と同じです。これをしないとhttpdの再起動時にパスワードを聞かれます。当然のごとくOSの起動時にも聞かれてしまうので、サーバが(物理的に)そばにないときは、必ずやっておきましょう(^_^;)

openssl rsa -in server.pem -out server.pem

パスワードを聞かれるので、最初に入力したものと同じものを入力します。
参考サイト2では.keyファイルを処理していますが、これは最初に生成した「鍵」のことです。
よってここでは、拡張子をpemに変更します。

どこかわかりやすい場所にファイルを移動する

この辺はお好みで(^_^;)
わたしは/usr/local/apache2/cert/ディレクトリを作成してそこに移動しました。

httpd-ssl.confの設定を行う

https用の設定ファイルは、conf/extraディレクトリの中にある、httpd-ssl.confです。
まずはconf/httpd.confファイルで、httpd-ssl.confをインクルードします。コメントアウトされているはずなので、探してコメントアウトを外してください。

vi /usr/local/apache2/conf/httpd.conf
> httpd-ssl.confのIncludeをアンコメントする・・・
vi /usr/local/apache2/conf/extra/httpd-ssl.conf

内容は参考サイト1にあるとおり、ほとんどhttpd.confと同じです。
ただし忘れてはいけないのは、それに加えて、以下の三つを編集すること

  • SSLVerifyClient
  • SSLCertificateFile
  • SSLCertificateFileKey

それぞれviの検索機能で探してください。

SSLVelifyClient

デフォルト値は「SSLVerifyClient require」となっていますが、クライアント証明書がないためnoneに変更にする必要があります*1
Apacheのバージョンによっては、ここがrequireのような文字列ではなく数字のフラグになるらしいです(その場合は0を指定すること)。

SSLCertificateFile

ここは例文がコメントになっていますが、先ほど移動したcrtファイルのフルパスを指定します。

SSLCertificateFileKey

ここも例文にコメントがありますが、pemファイルのフルパスを指定します。

Apacheを再起動

終わったらviを保存して閉じ、apacheを再起動させましょう。
これでhttps通信が可能になっています(いるはずです)。もし失敗していたら、今までの実行ログを確認しながらやり直してください。
とりあえず警告表示は当然出ますが、Windows上のFirefox2、Opera9、IE6で表示できることを確認しました*2
Windows MobileのIE Mobile、Opera Mobileでも接続できることを確認しました(注釈にもあるとおりクライアント証明書の可否を設定する必要あり)。こっちはページのプロパティが見えないのでちゃんと暗号化されてるかどうかはわかりません。
携帯電話は――めんどくさいのでパスさせてください(^_^;)


とりあえず、これでなんとか先に進めそうです。あとはSubversionのセットアップ(リポジトリの配置)とTracの配置だけだ、がんばるぞー。

参考サイト

  1. おうちでサーバ - Saisse's Wiki
  2. apache2.0.x & mod_sslインストール(openssl)〜Solaris User
  3. Apache + SSL(Windows上での情報なので直接は使いがたいですが、基礎知識からあるのでわからない場合は参照するとよいと思います)

そういえばApacheのインストール手順とか書いてないですね(^_^;)いろいろ大変だったのでいまいちよく覚えてないですが。
一応Googleノートブックに書いてあるので、とりあえず暇が出来たときにでもどこかに公開します。

*1:方々の説明を読む限りoptionalでも何とかなりそうな感じですが、optionalだとIE Mobile、Opera Mobileからアクセスできませんでした。まあ、証明書なんて用意してないくせに「なくてもいいよ」なんて嘘つくのも何なので、ここははっきりnoneと書いておきましょう(^_^;)

*2:Operaでは「この接続は保護されていないため――」なんて表示されてるんですが、大丈夫なんでしょうか?一応「暗号化プロトコル:TLS v1.0――」と書いてはあるのですが・・・ もし暗号化してるのならこういう表記は控えてほしいなあ