Як додати сертифікат SSL до AWS EC2 за допомогою нової служби AWS Certificate Manager


91

AWS випустила новий сервіс AWS Certificate Manager . Одне, що я отримав з опису, це те, що якщо ми використовуємо цю послугу, нам більше не доведеться платити за сертифікат.

Вони надають сертифікати для Elastic Load Balancer (ELB) та CloudFront, але я ніде не знайшов EC2.

Чи є спосіб використовувати сертифікат із EC2?


1
Ви можете заглянути на letsencrypt.org, щоб отримати безкоштовні та надійні сертифікати, з такими авторами, як chrome та facebook, це виглядає досить добре
Том


1
Ой, я не знав про це. Однак я думаю, що вони праві не дозволяти цього. Чи можете ви скоріше створити псевдоніми в іншому домені (наприклад, через Route53) і не використовувати вказане за замовчуванням ім'я aws dns?
Том

Я нещодавно натрапив на відео [квітень - 2020], де вони створюють сертифікат SSL \ TLS за допомогою диспетчера сертифікатів AWS, а потім розміщують його на Екземплярі EC2 за балансувачем навантаження. youtu.be/bWPTq8z1vFY Це було дуже корисно.
nktsamba

Відповіді:


109

З: Чи можу я використовувати сертифікати на екземплярах Amazon EC2 або на власних серверах?

Ні. На даний момент сертифікати, надані ACM, можна використовувати лише з певними послугами AWS.


З: За допомогою яких служб AWS я можу використовувати сертифікати, надані ACM?

Ви можете використовувати ACM із такими службами AWS:

• Еластичне балансування навантаження

• Amazon CloudFront

• AWS Elastic Beanstalk

• Шлюз API Amazon

https://aws.amazon.com/certificate-manager/faqs/

Ви не можете встановити сертифікати, створені Amazon Certificate Manager (ACM), на ресурси, до яких ви маєте прямий низькорівневий доступ, такі як EC2 або сервери поза AWS, оскільки вам не надано доступ до приватних ключів. Ці сертифікати можуть бути розгорнуті лише на ресурсах, керованих інфраструктурою AWS - ELB та CloudFront, - оскільки інфраструктура AWS зберігає єдині копії приватних ключів для сертифікатів, які вона генерує, і підтримує їх у жорсткій безпеці з контрольованим внутрішнім контролем доступу .

Вам потрібно було б, щоб ваші машини EC2 слухали за CloudFront або ELB (або обидва каскадні, також могли б працювати), щоб використовувати ці сертифікати для вмісту, що надходить з EC2 ... тому що ви не можете встановити ці сертифікати безпосередньо на машинах EC2 .


11
Хороша новина полягає в тому, що якщо ви видали сертифікат і щойно дізналися тут, що не можете його встановити, плата не стягується.
kraftydevil

1
ха-ха @kraftydevil Думаю, у вас є сенс. Зверніть увагу, що letsencrypt.org є законним, визнаним, некомерційним джерелом безкоштовних сертифікатів SSL, які ви можете встановити де завгодно. (І, я можу додати, я не пов'язаний з Let's Encrypt.)
Майкл - sqlbot

6
@EngineerDollery ні, це справедливо лише для одного конкретного випадку. Ви абсолютно можете використовувати Let's Encrypt на EC2. Що ви не можете зробити, це отримати сертифікат Let's Encrypt для *.amazonaws.comімені хосту EC2, оскільки, розумно, політика Let's Encrypt цього не дозволяє ... але для контрольованого домену, який вказує на IP-адресу екземпляра EC2, або ELB, або CloudFront Ви, безумовно, можете скористатися програмою Let's Encrypt, як і будь-де інше.
Майкл - sqlbot

2
Посилання на приклад із автоматизованим дозволом
Ефрен,

Я слідував за налаштуванням ELB, і зараз я отримую 502 Bad Gateway, коли я вказав запис на ELB
MuaathAli

2

Ні, ви не можете використовувати менеджер сертифікатів aws для розгортання сертифікатів на EC2. Сертифікати диспетчера сертифікатів можна розгорнути лише проти хмарного фронту та еластичного балансу навантаження. Inoredr, щоб використовувати його на ec2, вам потрібно поставити elb поверх ec2, щоб запит від клієнта на завантажувач балансування був захищений https, а від elb до ec2 веб-сервер - на http.


1

Якщо ви використовуєте сертифікат AWS ACM лише для внутрішніх цілей, тоді ви, ймовірно, можете використовувати AWS ACM Private CA для видачі сертифікатів. (Я думаю, ви можете використовувати його і для цілей загального / зовнішнього трафіку, якщо ваш кореневий CA є публічно довіреним CA).

https://docs.aws.amazon.com/acm-pca/latest/userguide/PcaGetStarted.html

Під час запуску Application / EC2 / Container встановіть крок, щоб експортувати сертифікат / приватний ключ, виданий приватним центром сертифікації ACM, до місця призначення та почніть посилатися на нього для обслуговування трафіку.

https://docs.aws.amazon.com/cli/latest/reference/acm/export-certificate.html

Одна хороша річ - ви можете контролювати, хто може викликати функцію експорту сертифіката, використовуючи роль IAM, щоб не кожен міг завантажити приватний ключ сертифіката.

Недоліком цього є те, що приватна ЦС - це дорога послуга AWS (400 доларів на місяць). https://aws.amazon.com/certificate-manager/pricing/


Ви не можете використовувати експортний сертифікат з ACM PCA - але він вам теж не потрібен: у вас вже буде закритий ключ, і get-certificate надає uit сертифікат і ланцюжок.
Вільний Вілларт

@FreeWillaert Я впевнений, ви не отримаєте частину приватного ключа із сертифікатом get. перевірте цю документацію CLI . і це . Перевірте обидва виходи відповідей cli. Я вже перевірив ці команди CLI.
Імран,

@FreeWillaert так :). Наведену вище команду CLI можна використовувати в сценарії запуску Docker або сценарії даних користувача EC2 для завантаження сертифіката приватного ключа під час виконання та початку використання їх для обслуговування трафіку TLS. Спеціально в ASG. Хороша частина полягає в тому, що ви можете контролювати, хто може телефонувати над командою CLI, використовуючи ролі IAM, тому не всі мають доступ до приватних ключів.
Імран

1
@Imran, зверху слід писати жирним шрифтом, One downside with this is, private CA is expensive AWS service($400/month).наприклад, я б пропустив, якби не прочитав цю відповідь 2-й раз
Piekarski D

@PiekarskiD готово. Дякую за пропозицію !!. якщо вам подобається моя відповідь, ви можете проголосувати завжди !!.
Імран

0

Додаючи до коментарів вище, ви не можете використовувати для цього диспетчер сертифікатів AWS, але ви можете додати сертифікат Let's Encrypt до ec2 на сервері Windows, на якому працює IIS, і це досить просто:

  1. Пов’яжіть пружний ip зі своїм екземпляром ec2.

  2. Переконайтесь, що у вас зареєстрований домен. Ви не можете використовувати імена типів ec2----------.us-east-1.compute.amazonaws.com, що постачаються з вашим екземпляром.

  3. За допомогою налаштувань DNS вашого провайдера домену вкажіть на ваш еластичний IP.

  4. Підключіться до свого екземпляра ec2 та додайте доменне ім’я до прив’язок сайту.

  5. Перейдіть на https://github.com/PKISharp/win-acme/releases

  6. Перегляньте розділ "Активи" та використовуйте останню версію (наприклад, win-acme.v2.0.10.444.zip). Це єдина папка активів, яка вам потрібна.

  7. Розпакуйте папку, відкрийте термінал від імені адміністратора та cd в розпаковану папку.

  8. Запустіть wacs.exe і дотримуйтесь вказівок.

  9. Переконайтеся, що група безпеки, призначена вашому екземпляру, дозволяє трафік (принаймні вашу власну IP-адресу) через порт HTTPS, який ви вибрали в IIS; це порт 443 за замовчуванням.

Я знайшов посилання нижче корисними, коли з’ясовував це. Ось відео з попереднім випуском, якщо вам потрібна додаткова допомога, але це та сама ідея.

https://www.youtube.com/watch?v=fq5OUOjumuM

Також ця стаття може бути корисною:

https://weblog.west-wind.com/posts/2016/feb/22/using-lets-encrypt-with-iis-on-windows

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.