Help us understand the problem. What is going on with this article?

ELBにサーバ自己証明書をインストールしWEBサーバにHTTPS通信をしてみた

More than 1 year has passed since last update.

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ファイルができていることを確認してください。

CertificateSigningRequest作成
openssl req -new -key private-key.pem > private-key.csr

コマンドを実行すると対話形式で色々聞かれますEnter連打してください。

カレントディレクトリにprivate-key.csrファイルができていることを確認してください。

x509自己証明
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の作り方が微妙な場合はこれを参考に確認して戻ってきてください。

スクリーンショット_2015-10-12_15_59_19.jpg

HTTPS通信をHTTP(EC2)へ転送する設定を追加するところが異なります。

スクリーンショット_2015-10-12_16_02_37.jpg

同様にSGにもHTTPS通信を許可するようにしてください。
この設定だとHTTPも許可しちゃってるのでほんとんHTTPSって思うかもしれません。そういう場合はHTTPを外してみてください。

スクリーンショット_2015-10-12_16_25_35.jpg

証明書をアップロードします。
- 証明書名:この証明書の名前を入力します。server.crtとしましたが、先ほど自分で作った自己証明書のファイル名で問題無いです。
- プライベートキー:RSA秘密鍵をcatしてファイルの内容を表示します。その後、-----BEGIN RSA PRIVATE KEY-----から-----END RSA PRIVATE KEY-----までそのままコピペしてください。
- パブリックキー証明書:今回は空欄で良いです。本物買った際にはなんかあるんだと思います。ちなみに、自己証明書を貼っても成功しました。

スクリーンショット_2015-10-12_16_33_57.jpg

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 
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした