Я установил nginx на AWS с помощью этого скрипта настройки
--prefix=/usr/local/nginx-1.16.1 --with-http_ssl_module --with-openssl=~/Downloads/openssl-1.1.1i --without-http_rewrite_module
и я выпустил сертификат для моего URL (пусть это будет mydom.com) с помощью AWS Certificate Manager (ACM), и его статус отображается какИзданныйЗатем я отредактировал соответствующий раздел в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>
}
Я выбрал файлы:
/etc/ssl/certs/ca-bundle.crt
и /etc/trusted-key.key
только потому, что они были в файловой системе Linux и просто для того, чтобы попробовать запустить 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, в первую очередь балансировщиками нагрузки. Вы не можете получить доступ к закрытому ключу, поэтому вы не можете предоставить сертификат ACM с помощью Nginx, установленного на вашем экземпляре EC2.
Лучшими вариантами для вас являются:
- Завершение https на ALB, перенаправление трафика по http на веб-сервер
- Используйте сертификат Let's Encrypt. Существует широкий выбор программного обеспечения, которое поможет автоматизировать это.