Let’s Encrypt使ってプロキシサーバー、NodeとApacheのWebサーバーをSSL通信…(1)

20160221

はいどーも!

 

ここ一ヶ月、teriyakiegg.comのURLをhttpからhttpsにするために永遠とハマっておりました。

teriyakiegg.com

サイトに訪れてもらうとお分かりいただけますが、やっっっとhttpsにできました。

今宵は今まで一体何にそんなにハマっていたのかを振り返りたいと思います。

 

〜第一章 Let’s Encrypt 暗号化をしよう〜

 

まず、SSL証明書は無料で取得できるLet’s Encryptを使ってみることにしました。

難しそうだな…….

とずっと思ってたのですが、案外ここはちょいハマりで済みました。

最初、Let’s Encrypt公式の手順や色んな記事を見ても、

 

上の二つがエラーで実行できずナンジャコレとなりました。

が、

以下の記事の通りにやったらうまくできました。
『無料SSL証明書の Let’s Encrypt が公開されたので実際に試してみた』
http://www.websec-room.com/2015/12/04/2380

–debugを付ければ良しと…

力は余ってなかったのでcronでの証明書の自動更新の設定はしませんでした。

いや、実は試みましたが諦めました!

期限が切れる90日が経つ前にもう一度トライします。

cert.pem #サーバ証明書
chain.pem #中間証明書
fullchain.pem #サーバ証明書+中間証明書
privkey.pem #サーバ秘密鍵

 

そういうわけで無事、Let’s Encryptの力を借りこいつら証明書と鍵をゲットできました。

 

〜第二章 HTTP-PROXY プロキシサーバー〜

 

今までのサーバーの稼働状況はこうでした。

ポート80 プロキシサーバー

ポート8080 Apacheのdifusha.com

ポート8081 Node.jsのteriyakiegg.com

httpのポート80で来るリクエストに対してプロキシサーバーがホスト名を見て、8080か8081にリクエストを割り振り。

WebサーバーがどっちもApacheの場合はhttpd.confでVirtualHostを使えばプロキシは要らないのですが、Nodeと共存させるということでプロキシが必要になったのは前回の記事で書いた気がします。たぶん。

知識も乏しい中で、この状況で全部SSL通信にしよう、と思ったのが愚かなドリーマー。

 

とにかく最初は証明書がちゃんと正常に働くかも不安だったので、デフォルトポート443で証明書を試してみました。

Apacheのssl.confにLet’s Encryptで取得した証明書達を指定して、httpdを再起動!

すると、おお!

httpsで通信できてる!

サイトの中身はdifusha.comだけど..

とりあえず、証明書はちゃんと働いているというのが確認できたのですが、ここから沼が始まりました。

 

 

まず、ポート443で来るリクエストに対してhttps://difusha.comとhttps://teriyakiegg.comに割り振るためにhttpsバージョンのプロキシが必要じゃ!と思いました。

そしてdifusha.comはポート8443、teriyakiegg.comは8444でlistenすることにしました。

最初に取り掛かったのはdifusha.comを8443でlistenするようにすること。

こーれが本当に…

 

肝心のはまりポイントを書く前に今宵は寝る時間が来てしまいました。

断腸の思いで記事を分割して、残りは明日書こうと思います。

 

 
Posted by てりやき
Twitter→@teriyakiegg

Comments are closed.