自宅サーバで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の配置だけだ、がんばるぞー。
参考サイト
- おうちでサーバ - Saisse's Wiki
- apache2.0.x & mod_sslインストール(openssl)〜Solaris User
- Apache + SSL(Windows上での情報なので直接は使いがたいですが、基礎知識からあるのでわからない場合は参照するとよいと思います)
そういえばApacheのインストール手順とか書いてないですね(^_^;)いろいろ大変だったのでいまいちよく覚えてないですが。
一応Googleノートブックに書いてあるので、とりあえず暇が出来たときにでもどこかに公開します。