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

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

More than 5 years have passed since last update.

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;
    }
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
ユーザーは見つかりませんでした