ELBで書きたいネタ的にはラストでしょうか。
気が向いたら内部向けロードバランサの仕様について書くかもしれませんが・・・
まあ、とりあえずHHPSまで抑えておけばねw
###0.ゴール
HTTPS通信でSSL通信を行う。
これです。
まあ、意外とめんどくさいんですけどね、これ。
特にオレオレ証明書の用意とか・・・
そもそも暗号化技術についても少し知っておくべきだと思うので僕はこの記事を参考にしました
####Elastic Load Balancing の SSL 証明書一番下の参考を先に見るべきですが、ここを読めばやり方が書いてあります。
###1.証明書の準備
自分で検証するだけなのに認証局から買って・・・とか嫌ですね。いくら変態言われててもそこまでしたくないです。なので、自己証明書を使ってやってみましょう。
####1.1 サーバの準備
AmazonLinuxを使用します。もし立て方がわからなかったらここを参考にして作って戻ってきてください。
####1.2 自己証明書の作成
では、自己証明書を作っていきます。
AmazonLinuxにSSHでログインができていることを前提とします。
openssl genrsa 2048 > private-key.pem
カレントディレクトリにprivate-key.pem
ファイルができていることを確認してください。
openssl req -new -key private-key.pem > private-key.csr
コマンドを実行すると対話形式で色々聞かれますEnter連打してください。
カレントディレクトリにprivate-key.csr
ファイルができていることを確認してください。
openssl x509 -req -signkey private-key.pem < private-key.csr > private-key.crt
カレントディレクトリにprivate-key.crt
ファイルができていることを確認してください。
今回はSSL通信をELBで処理するのでEC2上のApacheに設定したりということはありません。
逆に、サーバ上でSSL通信を処理したい場合はサーバ上のApacheに証明書を登録してあげてください。
###2.証明書のインストール
では先ほど作成した証明書をELBにインストールしていきたいと思います。
これを読んでる方はELBの作成にこまる方ではないと思いますが、ELBの作り方が微妙な場合はこれを参考に確認して戻ってきてください。
HTTPS通信をHTTP(EC2)へ転送する設定を追加するところが異なります。
同様にSGにもHTTPS通信を許可するようにしてください。
この設定だとHTTPも許可しちゃってるのでほんとんHTTPSって思うかもしれません。そういう場合はHTTPを外してみてください。
証明書をアップロードします。
- 証明書名:この証明書の名前を入力します。server.crtとしましたが、先ほど自分で作った自己証明書のファイル名で問題無いです。
-
プライベートキー:RSA秘密鍵をcatしてファイルの内容を表示します。その後、
-----BEGIN RSA PRIVATE KEY-----
から-----END RSA PRIVATE KEY-----
までそのままコピペしてください。 - パブリックキー証明書:今回は空欄で良いです。本物買った際にはなんかあるんだと思います。ちなみに、自己証明書を貼っても成功しました。
https://<ELBのDNS名>
でアクセスすると上記の警告が出て、アクセスに成功します。
###3.おわり
思ったより書いてて時間かかりました。
以前から1回やろうと思っててやってなかったので良い機会でした〜
###参考
opensslでRSA暗号と遊ぶ
オレオレ証明書をopensslで作る(詳細版)
【初心者向け】ELBにSSL証明書をインストールする
自己署名証明書でAmazon ELBのHTTPS接続を使用する。
AWS で自己署名証明書を使ってみる
###番外.RSA鍵(opensslコマンド)
opensslでRSA暗号と遊ぶでやってみたコマンドのメモです。
完全に僕の備忘録。
openssl genrsa 2048 > private-key.pem
openssl rsa -pubout < private-key.pem > public-key.pem
RSA鍵
- 秘密鍵:2つのくっそでかい素数でその2つの積を出してる
- 公開鍵:積だけしってる。→その積だ出せる2つの素数(秘密鍵)知ってるってことはお前大丈夫だな
→実際はちょっと違うけどニュアンス的にこんなイメージを持っておくことにした。
期間を自身で設定する自己証明にする<-days>オプション
openssl x509 -req -days "期間日にち単位” -signkey "秘密鍵" < "秘密鍵から作った認証局署名付きファイル" > server.crt