2011年1月26日水曜日

ELBを利用して1つのEC2で複数ドメインのHTTPS(SSL)

スズキです。

EC2には一つのIPアドレスしか割り振られないので、
基本的に複数ドメインのHTTPS(SSL)ができません。

ですがELBを利用すると、1つのEC2で
複数ドメインのHTTPS(SSL)利用できます。

具体的な方法は、下記で紹介されています。
http://elwoodicious.com/2009/12/23/using-elb-to-serve-multiple-domains-over-ssl-on-ec2-for-giggles/

ただし、上記記事は、以下で紹介した
http://blog.suz-lab.com/2011/01/elbssl-termination.html
ELBの"SSL Termination"機能がなかったときのものなので、
今なら、もっとスマートに実現出来るはずです。

ELBの"SSL Termination"を利用した方法は下記となります。

(1) SSLを設定したELBを用意する。

(2) (1)とは別のSSLを設定したELBを用意する。

(3) (1)のホスト名と(2)のホスト名をバーチャルドメインとして設定をした
EC2(httpd)を用意する。

(4) EC2を(1)と(2)のELBに登録する。

このやり方なら、SSLの処理は各ELBで行い、実際のコンテンツは、
一つのEC2で公開する形となり、表記を実現することができます。

ただし、ここで一つ問題があります。
"Manegement Console"では1つのEC2を複数のELBに登録することができません。
実際に(4)を実施するには、APIベースのツールを利用する必要があります。

今回は"Elastic Load Balancing API Tools"を(Windowsで)使ってみました。
http://aws.amazon.com/developertools/Amazon-EC2/2536

使い方は簡単で、"P:\common\sbin\elb"に一式展開してあるとすると、
環境変数を下記のように設定すれば

> set JAVA_HOME=P:\windows\sbin\java
> set AWS_ELB_HOME=P:\common\sbin\elb
> set PATH=%PATH%;%JAVA_HOME%\bin;%AWS_ELB_HOME%\bin;

以下のコマンドでELB(my-load-balancer)に
EC2(i-xxxxxxxx)を追加することができます。

> elb-register-instances-with-lb my-load-balancer ^
? -I AAAAAAAA ^
? -S SSSSSSSS ^
? --region ap-southeast-1 ^
? --instances i-xxxxxxxx
※ "-I"はアクセスキー、"-S"はシークレットキー。

この方法で、(1)、(2)のELBに対して、同一のEC2を登録すればOKです。

"Manegement Console"でも、
二つのELBに同一のEC2が登録されていることが確認できます。
--------
http://www.suz-lab.com

0 コメント: