AWS で SSL を使用して nginx を実行する

AWS で SSL を使用して nginx を実行する

このconfigureスクリプトを使用してAWSにnginxをインストールしました

--prefix=/usr/local/nginx-1.16.1 --with-http_ssl_module --with-openssl=~/Downloads/openssl-1.1.1i --without-http_rewrite_module

AWS Certificate Manager (ACM) を使用して URL (mydom.com とします) の証明書を発行しましたが、そのステータスは次のように表示されます。発行済み次に、関連するセクションを編集しました。nginx.conf

server {
listen 443 ssl;
server_name localhost mydom.com;
ssl_certificate  /etc/ssl/certs/ca-bundle.crt;
ssl_certificate_key  /etc/trusted-key.key;
<truncated>
}

私は次のファイルを選択しました。Linux /etc/ssl/certs/ca-bundle.crtファイル /etc/trusted-key.keyシステム上に存在していたため、nginx がそれらで実行されるかどうかを確認しようとしただけですが、実行されませんでした。結果は次のとおりでした。

[emerg] cannot load certificate key "/etc/trusted-key.key": PEM_read_bio_PrivateKey() failes (SSL: error:0909006C:PEM routines:get_name: no start line:Expecting: ANY PRIVATE KEY)

もちろん、それは単なる試みでした。そうでなければ、おそらく.crtACM が発行したファイル (存在する場合) を使用し、何らかの方法で.keyファイルを作成して Linux ファイル システムのどこか ( の下など) に配置する必要がある/etc/nginx/sslと思います。よくわかりません。どのように進めればよいでしょうか?

注: 私は自分のウェブサーバーでウェブアプリケーションを実行した経験がありますが、httpあまり経験がないのですがhttps

答え1

ACM 証明書は、AWS マネージドサービス、主にロードバランサーでのみ使用できます。秘密キーにアクセスできないため、EC2 インスタンスにインストールされた Nginx を使用して ACM 証明書を提示することはできません。

最善の選択肢は次のとおりです。

  • ALBでhttpsを終了し、http経由でトラフィックをWebサーバーに転送する
  • Let's Encrypt 証明書を使用します。これを自動化するのに役立つさまざまなソフトウェアから選択できます。

関連情報