HTTPS を使用してバックエンド サーバーと通信する ELB をセットアップしようとしています。単一のバックエンド サーバーを使用して概念実証をセットアップしようとしていますが、ELB をサーバーと通信させることができないようです。SSL を使用しないセットアップは完全に機能するため、これは証明書の問題であるとほぼ確信しています。
どうすればこれを設定できますか? 複数の回答やブログ投稿からさまざまな提案を試みましたが、うまくいきません。
私が今行っていることは、次のコマンドを使用して自己署名証明書を設定することです ( AWS ELB -> Backend Server over HTTPS with Self-Signed Certificate から):
$ openssl genrsa \
-out /path/to/ssl.key 2048
$ openssl req \
-sha256 \
-new \
-key /path/to/ssl.key \
-out /path/to/ssl.csr
$ openssl x509 \
-req \
-days 365 \
-in /path/to/ssl.csr \
-signkey /path/to/ssl.key \
-out /path/to/ssl.crt
署名時に複数のドメイン名を試しましたが、それらを使用してカールできます。
curl https://[Public DNS, or private DNS or IP used to create the SSL crt]/status --cacert /path/to/ssl.crt
ここで使用すべきドメイン/IP/DNS エントリはありますか? 少なくともcurlが機能することはかなり良いと思います。
現在、私のnginx構成(サイト対応ファイル内)は次のようになっています:
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /path/to/ssl.crt;
ssl_certificate_key /path/to/ssl.key;
server_name <dummy value of "_" or name used to make SSL certs>;
client_max_body_size 20M;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
これは、上記の curl コマンドで機能します。
クラシック ロード バランサとアプリケーション ロード バランサを試しました。クラシックでは、ssl.crt の内容を追加しようとしました。アプリケーション ロード バランサに同様のオプションはありませんが、HTTP->HTTPS を非常に簡単に転送できるため、可能であればそれらを使用したいと考えています。いずれにしても、クラシック ロード バランサーもアプリケーション ロード バランサーもサーバーと通信していません。
何が欠けているかについての提案はありますか?または、何が欠けているかを判断する方法は?