俺の報告

RoomClipを運営するエンジニアの日報(多分)です。

日報 #51 - ELBにSSLを、EC2のPrivate IPを

あっちゃこっちゃ色々とやっております。
昨日宣言していたELBのSSLツッコミの話ですが、
基本的にはググって貰えばいいので、1個だけ。
ELBのListenからSSLをぶっこむ際に、

java.lang.ClassCastException: org.bouncycastle.openssl.PEMEncryptedKeyPair cannot be cast to org.bouncycastle.openssl.PEMKeyPair

こんなエラーを受けたら、
秘密鍵にPEMフレーズが付いているせいです。
なのでそれを解除しましょう。

openssl rsa -in private.ssl.hoge.key -out private.ssl.hoge.nopass.key 

PEMフレーズはCSR作成の時に仕込まれる秘密鍵を、さらに暗号化するときに使ったフレーズです。
つまりこのままでは秘密鍵自体が暗号化されてて、apacheとかでは呼び出しのたびにPEMフレーズを求めるようになります。ということで、ELBは復号化された秘密鍵を使うのが一般的らしいですよ。奥さん。

ということで、javaのExceptionを裸で貰ってギョッとせずに、
冷静にPEMフレーズを外してやりましょう。

後もう一つの豆知識ですが、
依然VPNではなくClassic EC2をお使いの皆様、
それでもなおPrivate IPを使いたいというシーンは多々あると思います。
EC2毎に一応配置されているPrivate IPですが、ゲートウェイがどこかイマイチわからないので、
EC2間で通信できるのか不安になるかと思います。
結論から言うともちろん通信できるみたいなんですが、いくつか注意点が。

  1. pingはなぜか通らない (httpingやtelnetとかでポート指定した接続方法じゃないといかぬ)
  2. security group で 10.0.0.0/0 みたいにPrivateに対してちゃんとポートを開けてやること
  3. 同じAvailability Zoneじゃないと駄目

最後の3がネックですね。
あんま公式文章がなくて「俺調べ」になっちゃいますが、
とにかく僕が試した感じだとそうでした。
少なくともa->bは見えませんでしたね。
まぁそりゃそうかとも思いますが、もうちょっとゲートウェイとかの位置を分かりやすくしてくれると助かるのに。。。
さて、バラバラと豆知識でしたが、今週も、お疲れ様でした!