この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)
もちろん、それは単なる試みでした。そうでなければ、おそらく.crt
ACM が発行したファイル (存在する場合) を使用し、何らかの方法で.key
ファイルを作成して Linux ファイル システムのどこか ( の下など) に配置する必要がある/etc/nginx/ssl
と思います。よくわかりません。どのように進めればよいでしょうか?
注: 私は自分のウェブサーバーでウェブアプリケーションを実行した経験がありますが、httpあまり経験がないのですがhttps
答え1
ACM 証明書は、AWS マネージドサービス、主にロードバランサーでのみ使用できます。秘密キーにアクセスできないため、EC2 インスタンスにインストールされた Nginx を使用して ACM 証明書を提示することはできません。
最善の選択肢は次のとおりです。
- ALBでhttpsを終了し、http経由でトラフィックをWebサーバーに転送する
- Let's Encrypt 証明書を使用します。これを自動化するのに役立つさまざまなソフトウェアから選択できます。