Прост хостинг на сайт с Amazon S3 и HTTPS

Здравейте хора!

В този урок ще ви покажа как да хоствате статичен уебсайт с HTTPS на AWS с персонализиран домейн. Всичко това е възможно с помощта на AWS безплатно ниво.

Услугите, които ще използваме обаче, носят някои малки такси. Най-общо казано, те не трябва да надвишават $ 1 / месец.

Ще използваме комбинация от следните услуги на AWS:

—S3

- Маршрут53

- Мениджър на сертификати

- CloudFront

Нека да влезем в него!

Настройте вашите кофи S3

Първо, ще ви трябват две сегменти S3 , и двете трябва да съвпадат с вашето потребителско име на домейн с второто, включително www поддомейн.

Кофа 1:mywebsite.com

Кофа 2:www.mywebsite.com

Първата група (mywebsite.com) е основната група за вашия сайт. Това съдържа всички ваши файлове и активи за вашия статичен уебсайт.

След това настройваме тази група за статичен хостинг на сайтове. Можете да намерите това в раздела Свойства на групата и ние ще запазим зададените по подразбиране стойности с индекса на сайта, зададен на index.html.

Също така трябва да направим тази група публично достъпна, тъй като браузърът на потребителя ще трябва да има достъп до файловете на групата, за да изобрази уебсайта. Можем да направим това, като зададем политика на сегменти в раздела Разрешения.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "MY_BUCKET_ARN" } ]}

Това е проста политика, която ще позволи само публичен достъп за четене на обекти в групата. Сега, ако се насочите към крайната точка, определена в статичната конфигурация за хостинг на групата, трябва да видите уебсайта си.

Напредък! Но можем да се справим и по-добре от това.

Втората група (www.mywebsite.com) ще оставим празна, но ще конфигурираме да пренасочва към първата ни група, използвайки HTTP като протокол (ще го направим HTTPS по-късно).

Ведърите ви вече са готови за работа!

Конфигурирайте домейни с Route53

Така че вашият уебсайт работи и работи, но е достъпен само чрез крайната точка на сегмента, а не чрез вашия персонализиран домейн. Нека променим това.

Насочете се към Route53 . Ако сте регистрирали домейна си в Amazon Registrar, трябва да видите, че хостваната зона е настроена за вас с два набора записи. Един за сървър за имена (NS) и един за SOA.

Всичко, което трябва да направим, е да създадем още два набора записи, които да сочат към крайните точки на сегмента S3.

За всеки набор от записи:

- Тип: A - IPv4 адрес

- Псевдоним: Да

- Alias ​​Target: крайната точка на уебсайта S3, която съответства на това, което сте задали за Name.

Сега можем да се насочим към потребителския url ... и voilà!

Почти сме там, но има едно последно нещо, което пропускаме ...

Забележка : Ако вашият домейн е регистриран при друг регистратор на домейн (не Amazon), ще трябва да изпълните някои различни стъпки, за да настроите това. Обикновено ще трябва да добавите CNAME запис със стойност на основната крайна точка на сегменти S3.

Отстраняване на неизправности :

Ако сте изтрили хостваната зона, създадена от Amazon, когато сте регистрирали домейна за първи път (направих това, тъй като хостваните зони носят някои такси), ще трябва да създадете нова хоствана зона от нулата.

  1. Изберете „Създаване на хоствана зона“ и задайте името на домейна, например „mywebsite.com“
  2. Това ще генерира някои нови набори от записи за типове NS и SOA.
  3. Влезте във вашия регистриран домейн и актуализирайте стойностите на сървърите за имена до тези, генерирани в новия набор от записи NS.

Искане на сертификат

Страхотно, сайтът вече се хоства с помощта на потребителския URL адрес! Ние обаче можем да получим достъп до него само чрез HTTP протокол.

Винаги трябва да гарантираме, че нашите сайтове са защитени с помощта на HTTPS протокол. Това предпазва нашия сайт и потребителите от злонамерени инжекционни атаки и гарантира автентичност.

Отидете до диспечера на сертификати в AWS Console и заявете нов публичен сертификат (това е безплатно). Ще бъдете подканени да въведете имената на домейни, които искате да защитите.

Преди сертификатът да може да бъде издаден, Amazon трябва да може да потвърди, че притежавате посочените домейни.

Можете да избирате от два метода за проверка: Имейл или DNS.

Имейлът обикновено е по-опростен, но ще трябва да се уверите, че имате достъп до имейла, използван за регистрация на домейна. Като алтернатива, ако сте използвали Amazon Registrar и Route53, можете да изберете метода DNS. Това изисква да добавите някои специфични набори от записи към хостваната зона, но това е най-вече автоматизирано за вас, така че е доста просто.

It can take a few minutes for the certificate to be issued after validation.

When its all done we can continue to the final step!

Configuring CloudFront

For the final step we are going to use CloudFront which allows us to use the new SSL certificate to serve the website with HTTPS. CloudFront also speeds up the distribution of web content by storing it at multiple edge locations and delivering from the closest edge location to a user.

We need two new web distributions, one for each S3 bucket. Head to CloudFront in the AWS Console and create the first web distribution.

There are lots of settings available to create a web distribution, but for the basics we only need to change five:

  1. Origin Domain Name: Set this to the S3 website endpoint for one of the buckets. Important: This field will give you some auto-complete options with your S3 bucket names. However, using these can cause issues with redirecting to the bucket endpoint. So instead use the bucket endpoint directly.
  2. Origin Id: This populated for you when you enter Origin Domain Name.
  3. Viewer Protocol Policy: Set to “Redirect HTTP to HTTPS”.
  4. Alternate Domain Names: This should match the name of the S3 bucket you’re pointing to. For example “mywebsite.com”.
  5. SSL Certificate: Select “Custom SSL Certificate” and select your new certificate from the dropdown.

Do this again for the second S3 bucket.

The distributions can take a while to spin up, so while we wait, let’s do the finishing steps.

Back in S3, go to your secondary bucket (www.mywebsite.com), in the Properties tab and under Static Website Hosting set the redirect protocol to HTTPS.

Finally, head back to Route53. We need to update the custom A records we created to now target the CloudFront distributions rather than the S3 buckets. For each record, change the Alias Target and select the CloudFront distribution available in the dropdown.

Note: Again, if you are using another DNS service you’ll need to go update the CNAME record from there to point to the CloudFront domain name.

And there you have it! Your beautiful website is now available at the custom domain and served with HTTPS!

Thanks for reading! I hope this guide was useful and enjoyable, I’d love to know if you found it helpful.