2011年7月2日土曜日

暗号化されたWebサーバー(Apache + SSL)

apache + SSL でHTTPSを利用することができます。
HTTPSについては、HTTPSとは で詳しく述べています。

ApacheでSSLを利用するには、下記のものが必要になります。
・OpenSSL : SSLを利用するため
・mod_ssl : ApacheをSSLに対応させるため

今回はSSL対応のWebサイトのテスト運用ということで、Webサイトの鍵を自分で証明する自己署名という方法を使います。(本格運用するためにはCAへの登録が必要)


■OpenSSLのインストール
Linuxのディストリビューションによっては、yumコマンドが使えます。
yumコマンドが使えるとき
# yum install openssl

yumコマンドが使えないとき
http://www.openssl.org/source/ から[LATEST]とついたファイルをwgetコマンドでダウンロード
例)# wget http://www.openssl.org/source/openssl-1.0.0d.tar.gz

②ファイルを展開
# tar zxvf openssl-1.0.0d.tar.gz

③ソースをファイルに合わせて設定
# cd openssl-1.0.0d
# ./config

④ソースをコンパイル
# make

⑤インストール
# make install


Windowsの場合
http://www.slproweb.com/products/Win32OpenSSL.html からOpenSSLをダウンロードして、インストール。(OpenSSLをインストールするには、事前にActivePerlのインストールが必要)


■mod_sslのインストール
Apacheのインストール時点で、mod_sslがインストールされていることがほとんどです。
それでもmod_sslが無いよ、ってときはyumコマンドでインストールしてください。
# yum -y install mod_ssl

参考)http://thinkit.co.jp/free/article/0706/3/7/



■証明書の作成
①適当な作業ディレクトリに移動して、鍵と証明書を入れるディレクトリを作成します。
# mkdir ssl.key ssl.crt
# chmod 700 ssl.key ssl.crt

②Webサーバ鍵の作成
# openssl genrsa -des3 -out ssl.key/server.key 1024

-des3 : DES3方式でファイルを暗号化
-out ssl.key/server.key : 生成する鍵のファイル
1024 : 鍵の長さ

表示される指示に従って、パスフレーズを入直します。

③証明書の作成
# openssl req -new -days 365 -key ssl.key/server.key -out ssl.crt/server.crt

-days 365 : 証明書の有効期限
-key ssl.key/server.key : サーバー鍵のファイル
-out ssl.crt/server.crt : 生成する証明書のファイル

表示される指示に従って、質問に答える

③自己署名
# openssl x509 -req -signkey ssl.key/server.key -days 365 -in ssl.crt/server.crt -out ssl.crt/server.crt

今回は自己署名ということで、CAの代わりになって、証明書に署名する。
表示される指示に従って、パスフレーズを入力します。

④鍵のパスフレーズの解除
正式なSSLの運用では、この手順を実行しないでください。
自己署名のテストなので、パスフレーズを解除しています。

# mv ssl.key/server.key ssl.key/server.key.bak
# openssl rsa -in ssl.key/server.key.bak -out ssl.key/server.key

⑤Apacheの設定
ssl.confの設定も見にいけるようにしておく

今回は、httpd.confに下の設定を追加しました。
LoadModule ssl_module   modules/mod_ssl.so
Include /etc/httpd/conf.d/ssl.conf


ssl.confの設定ファイルを開いて、ポート番号、証明書と鍵の場所を追加してください。
今回は、ssl.confに下記の設定を追加しました。
#ポート番号の指定
Listen 443
#サーバー証明書の場所
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
#サーバーの鍵の場所
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
#httpsの仮想ホスト
<VirtualHost *:443>
#サーバー名
ServerName lovemoe.moe.hm:443

⑥Apacheの再起動

これで完成。httpsでアクセスして、https通信できればOK。
例)https://lovemoe.moe.hm/index.html

上手くいかなければ、apacheを起動したときのログを見て、対処する。


■httpsへアクセスする
firefoxで開いて、httpsでアクセスする
下の画面が出てくるので、”危険性を理解した上で接続するには > 例外を追加...”を選択
%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-07-0216.37.17-2011-07-2-13-15.png


下の画面が現れるので、”セキュリティ例外を承認” を選択
%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-07-0216.38.25-2011-07-2-13-15.png

URLの左にある、青色の部分を選択すると、下のような画面がでます。
ここから、証明書についての詳細を表示することができます。

%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-07-0216.28.08-2011-07-2-13-15.png

こんな感じ

%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-07-0216.41.14-2011-07-2-13-15.png




■取得した証明書を削除する
不必要な証明書をブラウザに取り込んでしまったので、削除したい。
(今回あやまって、https://lovemoe.moe.hm/index.html をアクセスして証明書をブラウザに取り込んでしまった人のために)

FireFoxだと、環境設定>詳細>暗号化を選択すると、下記の画面がでます。
“証明書を表示” を選択します。
%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-07-0216.43.02-2011-07-2-13-15.png

下の画面から、取り込んだ証明書を削除することができます。
%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-07-0216.44.20-2011-07-2-13-15.png

0 件のコメント:

コメントを投稿