Penyiapan HTTPS di Amazon EC2

105

Bagaimana kami mengaktifkan HTTPS di Amazon EC2? Situs kami bekerja di HTTP.

Muhammed Asharaf
sumber
pertanyaan bagus, tetapi saya mengatur grup keamanan dan tidak ada pesona yang terjadi
Shark Deng

Jawaban:

79

Pertama, Anda perlu membuka port HTTPS (443). Untuk melakukan itu, Anda pergi ke https://console.aws.amazon.com/ec2/ dan klik pada Security Groupslink di sebelah kiri, lalu buat grup keamanan baru dengan juga HTTPS tersedia. Kemudian, perbarui grup keamanan dari instance yang sedang berjalan atau buat instance baru menggunakan grup itu.

Setelah langkah-langkah ini, pekerjaan EC2 Anda selesai, dan itu semua adalah masalah aplikasi.

Daniele Dellafiore
sumber
15
Saya dapat menambahkan aturan baru untuk port 443 ke Grup Keamanan yang digunakan oleh instance dan itu baru saja mulai bekerja bahkan tanpa me-reboot-nya.
Dmitry Efimenko
9
you can't change a security group of a running instance, even rebooting- Saya pikir batasan ini telah dihapus sejak jawaban ini diposting.
Yuriy Nakonechnyy
12
Anda tidak perlu mengubah grup keamanan, Anda bisaEdit inbound rules
Khoi
8
@ nikhil84 dengan menambahkan HTTPS dalam grup keamanan Anda hanya membuka port 443 pada mesin yang merupakan langkah 1. Kedua, Anda perlu mengatur server Anda pada mesin itu untuk mendengarkan port 443 (bukan port HTTP default 80) dan menerima lalu lintas HTTPS. Server mana yang Anda gunakan?
Yuriy Nakonechnyy
4
@ nikhil84 silakan ikuti pedoman yang tercantum di sini: digitalocean.com/community/tutorials/… untuk mengatur https di Apache HTTPD
Yuriy Nakonechnyy
41

Jawaban ini difokuskan untuk seseorang yang membeli domain di situs lain (sebagai GoDaddy) dan ingin menggunakan sertifikat gratis Amazon dengan Manajer Sertifikat

Jawaban ini menggunakan Amazon Classic Load Balancer (berbayar), lihat harga sebelum menggunakannya


Langkah 1 - Minta sertifikat dengan Manajer Sertifikat

Buka Manajer Sertifikat> Minta Sertifikat> Minta sertifikat publik

Pada nama Domain Anda akan menambah myprojectdomainname.comdan *.myprojectdomainname.comdan pergi Berikutnya

Pilih validasi Email dan Konfirmasi dan Permintaan

Buka email yang telah Anda terima (di akun email tempat Anda membeli domain) dan setujui permintaan

Setelah ini, periksa apakah status validasi myprojectdomainname.comdan *.myprojectdomainname.comberhasil, jika berhasil Anda dapat melanjutkan ke Langkah 2

Langkah 2 - Buat Grup Keamanan ke Load Balancer

Pada EC2 masuk ke Grup Keamanan> dan Buat Grup Keamanan dan tambahkan http dan https masuk

Ini akan menjadi seperti: masukkan deskripsi gambar di sini

Langkah 3 - Buat Load Balancer

EC2> Load Balancer> Buat Load Balancer> Classic Load Balancer (Opsi ketiga)

Buat LB di dalam - vpc proyek Anda On Load Balancer Protocol tambahkan Http dan Https masukkan deskripsi gambar di sini

Berikutnya> Pilih keluar dari grup keamanan

Pilih grup keamanan yang telah Anda buat di langkah sebelumnya

Berikutnya> Pilih sertifikat dari ACM

Pilih sertifikat langkah 1

Berikutnya>

pada Pemeriksaan kesehatan saya telah menggunakan jalur ping / (satu garis miring daripada /index.html)

Langkah 4 - Kaitkan instance Anda dengan grup keamanan penyeimbang beban

EC2> Instans> klik proyek Anda> Tindakan> Jaringan> Ubah Grup Keamanan

Tambahkan Grup Keamanan Load Balancer Anda

LANGKAH 5

EC2> Load Balancer> Klik pada load balancer yang telah Anda buat> salin Nama DNS (A Record), itu akan menjadi seperti myproject-2021611191.us-east-1.elb.amazonaws.com

Pergi ke Route 53> Routes Zones> klik pada nama domain> Pergi ke Records Sets (Jika Anda tidak memiliki domain Anda di sini, buat zona yang dihosting dengan Domain Name: myprojectdomainname.comdan Type: Public Hosted Zone)

Periksa apakah Anda memiliki tipe record A (mungkin tidak), buat / edit kumpulan record dengan nama kosong, tipe A, alias Ya dan Targetkan dns yang telah Anda salin

Buat juga Record Set baru tipe A , name *.myprojectdomainname.com, alias Yes dan Targetkan domain Anda (myprojectdomainname.com). Ini akan memungkinkan akses situs Anda dengan www.myprojectdomainname.com dan subsite.myprojectdomainname.com. Catatan: Anda perlu mengkonfigurasi reverse proxy (Nginx / Apache) untuk melakukannya.

Di NS salin nilai 4 Server Nama untuk digunakan pada Langkah berikutnya, itu akan menjadi seperti ini:

ns-362.awsdns-45.com ns-1558.awsdns-02.co.uk ns-737.awsdns-28.net ns-1522.awsdns-62.org

Buka EC2> Instans> Dan salin IP Publik IPv4 juga

LANGKAH 6

Di situs pendaftaran domain tempat Anda membeli domain (dalam kasus saya GoDaddy)

Ubah perutean ke http : <Your IPv4 Public IP Number>dan pilih Teruskan dengan masking

Ubah Name Servers (NS) menjadi 4 NS yang telah Anda salin, ini dapat memakan waktu 48 jam untuk diterapkan

DigaoParceiro
sumber
Apakah saya harus menggunakan penyeimbang beban jika saya ingin https?
Curtis
Saya melakukan semua ini tetapi saya mendapatkan ERR_CONNECTION_TIMED_OUT ketika saya membuka domain saya di browser
Curtis
1
Saya perlu membuat penyeimbang beban dengan Grup Target baru pada port 80, lalu mengedit pendengar untuk menggunakan port 80. Bekerja sekarang. Terima kasih.
Curtis
1
@Curtis Load balancer bukan satu-satunya pilihan untuk menggunakan https, Anda juga dapat mengonfigurasi "lets encrypt" di dalam EC2 Anda
DigaoParceiro
@DigaoParceiro apa yang Anda lakukan dengan langkah 5. menyalin nama DNS?
Prashant
10

Instans Amazon EC2 hanyalah mesin virtual sehingga Anda akan menyiapkan SSL dengan cara yang sama seperti Anda menyiapkannya di server mana pun.

Anda tidak menyebutkan platform apa yang Anda gunakan, sehingga sulit untuk memberikan informasi lebih lanjut.

Geoff Appleford
sumber
Halo - Saya menjalankan instans T2.Micro Amazon Linux EC2. Saya menggunakan node.js untuk menopang server. Saya mendengarkan port 443 di skrip server saya dan grup keamanan saya dikonfigurasi untuk port 443. Apa lagi yang harus saya lakukan untuk mengaktifkan HTTPS? Saya butuh sertifikat, bukan? Mengalami kesulitan menemukan info yang layak untuk melakukan ini yang BUKAN berdasarkan pada Elastic Beanstalk.
Stephen Tetreault
2
@SMT - lihat letsencrypt.org untuk sertifikat gratis dan perpanjangan otomatis. Ada banyak info (via google) tentang cara mengaturnya menggunakan node. Tidak ada lagi yang khusus untuk AWS / EC2 yang perlu Anda lakukan.
Geoff Appleford
2
Terima kasih balasannya! Saya benar-benar membuatnya berfungsi beberapa hari yang lalu dan telah menyederhanakan beberapa langkah. Jika ada yang membaca ini dari masa depan: github.com/MSCHF/aws-ec2-node-npm-setup
Stephen Tetreault
5

Sebuah pertanyaan lama tetapi perlu disebutkan opsi lain dalam jawaban. Jika sistem DNS domain Anda telah ditentukan di Amazon Route 53, Anda dapat menggunakan layanan Amazon CloudFront di depan EC2 Anda dan melampirkan sertifikat Amazon SSL gratis ke sana. Dengan cara ini Anda akan mendapatkan keuntungan dari memiliki CDN untuk pengiriman konten yang lebih cepat dan juga mengamankan domain Anda dengan protokol HTTPS.

Halo W.
sumber
Apakah ada referensi atau blog yang menyebutkan langkah-langkah untuk mencapai hal ini?
Saurabh Yadav
di video ini atiqur rahman mendapatkan sertifikat ssl menggunakan manajer sertifikat amazon dan kemudian dia mengkonfigurasi cloud front dengan instance EC2. Setelah konfigurasi http / 2 secara otomatis diaktifkan.
Sachithra Dilshan
2

Gunakan Elastic Load Balacing , ini mendukung penghentian SSL di Load Balancer, termasuk melepaskan dekripsi SSL dari instance aplikasi dan menyediakan manajemen sertifikat SSL yang terpusat.

Peter Hulsen
sumber
16
Anda tidak menggunakan ELB hanya untuk menyediakan SSL, itu sebenarnya jawaban yang cukup menyesatkan. Server Anda perlu menyediakan SSL, jadi menambahkan penyeimbang beban hanyalah biaya tambahan jika Anda tidak membutuhkannya. Ini juga merupakan penghentian SSL dalam perangkat lunak, jadi SSL antara penyeimbang beban dan server merupakan langkah tambahan, yang memengaruhi kinerja.
Thomas the Tank Engine
1
Saya setuju dengan komentar anda Ini akan menambah biaya tambahan dan mempengaruhi kinerja. Kami tidak tahu persyaratan pasti mereka terkait dengan pemuatan di server mereka, jadi ini mungkin cara yang tepat. Tetapi saya tidak mengerti ucapan Anda "Server Anda perlu menyediakan SSL,", mengapa ini diperlukan? Penyeimbang beban juga mencakup pembongkaran SSL. Terima kasih.
Peter Hulsen
2
Ya benar. Anda dapat menggunakannya untuk menyediakan SSL dengan cara yang sederhana. Saya hanya berpikir bahwa instance tersebut masih memiliki nilai DNS publik di mana pengguna dapat mengaksesnya secara langsung untuk alasan apa pun. Jika itu terjadi, mungkin Anda ingin memaksakannya untuk menggunakan SSL juga.
Thomas the Tank Engine
Saya tahu komentar ini terlambat, tetapi dari pemahaman saya jika Anda ingin menggunakan nama domain terdaftar, maka Anda harus menggunakan ELB, karena IP EC2 dianggap 'non-permanen' dan oleh karena itu tidak dapat menggunakan sertifikat SSL Anda. Di sisi lain, jika Anda hanya menggunakan DNS yang disediakan Amazon, maka mungkin tidak perlu ELB, saya belum memeriksanya.
hexicle
2

Anda juga dapat menggunakan Amazon API Gateway . Letakkan aplikasi Anda di belakang API Gateway. Silakan periksa FAQ ini

Bhushan
sumber
0

Salah satu sumber daya terbaik yang saya temukan adalah menggunakan mari enkripsi, Anda tidak memerlukan ELB atau cloudfront agar instans EC2 Anda memiliki HTTPS, cukup ikuti petunjuk sederhana berikut: mari mengenkripsi Login ke server Anda dan ikuti langkah-langkah di tautan.

Hal ini juga penting seperti disebutkan oleh orang lain bahwa Anda membuka port 443 dengan mengedit grup keamanan Anda

Anda dapat melihat sertifikat Anda atau situs web lain dengan mengubah nama situs di tautan ini

Harap jangan lupa bahwa ini hanya berlaku selama 90 hari

Mustafa
sumber