AWSでELBを利用していて、Nginxでサーバ構築している場合の設定方法です。
参考
SSLについて
- SSLは通信の暗号化
- サブドメインでも利用する場合「ワイルドカード」対応のものを選択
SSLについて分からない場合でもAWSのELBへの設置であれば以下の手順でOKです。
CSRの作成
証明書購入後のアクティベートで必要となるもの。事前に作成しておく。今回のAWS・ELBへのSSL設定の場合、ローカルで作成しても問題なかった。その他の環境の場合はサーバ側での作成が必須となるかもしれない?(Keyがサーバ側にあるかどうかだと思う、AWSではELBにアップロードするので。)。
AWSのELBに設置する場合は、パスフレーズなしのCSRをもとにSSLを発行する必要があります。
ということらしい。
- 2048bitの鍵
openssl genrsa -des3 -out XXXXXXXX.key.pem 2048
※ 適当なパスを入力(次で使用) - パスワードを削除する
openssl rsa -in XXXXXXXX.key.pem -out XXXXXXXX.key_np.pem
- CSRの作成
openssl req -new -key XXXXXXXX.key_np.pem -out XXXXXXXX.csr.pem
- Country Name: JP
- Common Name: *.example.jp
- Email Address: ****@example.jp
- CSRの確認
openssl req -in XXXXXXXX.csr.pem -text
メール受信の準備
ワイルドカードSSLで例えば*.example.jp
を取得する場合、以下の様なアドレスが必要となる(アクティベート後の情報受信のため)。CSRの作成時に入力するアドレスかSSLストアに登録したアドレスか不明だが、メールは複数送信される。メールが届かないと次に進めなくなるかもしれないので、ここではしっかりと受信準備しておく。
- admin@example.jp
- admin@*.example.jp
※ 上記以外に、administrator, hostmaster, webmaster, postmasterやWhoisに公開登録されているアドレス。
証明書の購入
今回はRapidSSLのワイルドカード9,720円/1年を購入する。Paypalでデポジットとして入金して購入する。
カートに入れる容量で対象の項目を選択し、決済する。
アクティベートしてください
というボタンが表示されるのでクリックして進む。アクティベート待ちの証明書
の項目から購入した証明書の証明書番号をクリック。
アクティベート手順
- STEP1 CSRの貼り付け
- サーバの種類をその他を選択
- 作成したCSRをペースト(BEGINの行を含む)
- STEP2 お客様情報入力
- 受信のためのメールアドレスを選択
- その他情報の入力
- STEP3 確認画面
- 内容を確認し登録ボタンをクリック
- STEP4 完了
メールが届くので、メール内のリンクから承認する。
すると、再度メールが届き、以下の情報が記されている。
- Web Server CERTIFICATE SSLサーバ証明書
- INTERMEDIATE CA 中間証明書
AWSのELBに設置する
EC2のメニューからELBを選択し、Listenerにhttpsを追加すると、SSL Certificateが設定できるので、Upload a new SSL Certificate
を選択し、以下の手順で登録する。
- Certificate Name:
*.example.jp
- Private Key: XXXXXXXX.key_np.pemの内容 ※ パスワードを除去したKeyで、CSRではない。
- Public Key Certificate: Web Server CERTIFICATE SSLサーバ証明書
- Certificate Chain: INTERMEDIATE CA 中間証明書
nginxの設定
Nginxの設定については色々やり方があると思う。
location / {
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_next_upstream error;
if ($http_x_forwarded_proto != "https") {
rewrite ^(.*)$ https://$server_name$1 permanent;
}
# Add HTTP Strict Transport Security for good measure.
# https://developer.mozilla.org/ja/docs/Security/HTTP_Strict_Transport_Security
#add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;";
proxy_pass http://backend;
}