LoginSignup
91
92

More than 5 years have passed since last update.

AWSのELBにSSLを設定する(Nginx)

Last updated at Posted at 2014-09-03

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ストアに登録したアドレスか不明だが、メールは複数送信される。メールが届かないと次に進めなくなるかもしれないので、ここではしっかりと受信準備しておく。

※ 上記以外に、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;
    }
91
92
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
91
92