Cara menambahkan sertifikat SSL ke AWS EC2 dengan bantuan layanan AWS Certificate Manager baru

91

AWS telah menghadirkan layanan baru AWS Certificate Manager . Satu hal yang saya dapatkan dari uraian tersebut adalah jika kami menggunakan layanan ini kami tidak perlu membayar sertifikat lagi.

Mereka memberikan sertifikat untuk Elastic Load Balancer (ELB) dan CloudFront, tetapi saya tidak menemukan EC2 di mana pun.

Apakah ada cara untuk menggunakan sertifikat dengan EC2?

Bhavik Joshi
sumber
1
Anda dapat melihat di letsencrypt.org untuk mendapatkan sertifikat gratis dan tepercaya , dengan kontributor seperti chrome dan facebook terlihat cukup bagus
Tom
1
Aduh, saya tidak tahu tentang ini. Namun saya pikir mereka benar untuk tidak mengizinkan ini. Bisakah Anda lebih suka membuat alias di domain lain (melalui Route53 misalnya) dan tidak menggunakan nama aws dns default yang disediakan?
Tom
Saya baru saja menemukan video [April - 2020] di mana mereka membuat sertifikat SSL \ TLS dengan AWS Certificate Manager dan kemudian memasukkannya ke dalam Instans EC2 di belakang penyeimbang beban. youtu.be/bWPTq8z1vFY Sangat membantu.
nktsamba

Jawaban:

109

T: Dapatkah saya menggunakan sertifikat pada instans Amazon EC2 atau di server saya sendiri?

Tidak. Saat ini, sertifikat yang diberikan oleh ACM hanya dapat digunakan dengan layanan AWS tertentu.


T: Dengan layanan AWS mana saya dapat menggunakan sertifikat yang disediakan oleh ACM?

Anda dapat menggunakan ACM dengan layanan AWS berikut:

• Penyeimbangan Beban Elastis

• Amazon CloudFront

• AWS Elastic Beanstalk

• Amazon API Gateway

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

Anda tidak dapat menginstal sertifikat yang dibuat oleh Amazon Certificate Manager (ACM) pada sumber daya yang Anda miliki akses langsung tingkat rendahnya, seperti EC2 atau server di luar AWS, karena Anda tidak diberikan akses ke kunci privat. Sertifikat ini hanya dapat digunakan pada sumber daya yang dikelola oleh infrastruktur AWS - ELB dan CloudFront - karena infrastruktur AWS menyimpan satu-satunya salinan kunci privat untuk sertifikat yang dihasilkannya, dan menjaganya di bawah keamanan yang ketat dengan kontrol akses internal yang dapat diaudit .

Anda harus meminta mesin EC2 Anda mendengarkan di belakang CloudFront atau ELB (atau keduanya, bertingkat, juga akan berfungsi) untuk menggunakan sertifikat ini untuk konten yang berasal dari EC2 ... karena Anda tidak dapat menginstal sertifikat ini langsung di mesin EC2 .

Michael - sqlbot
sumber
12
Kabar baiknya adalah tidak ada biaya jika Anda mengeluarkan sertifikat dan baru mengetahui di sini bahwa Anda tidak dapat menginstalnya.
kraftydevil
1
lol @ kraftydevil Saya kira Anda benar, di sana. Perhatikan bahwa letsencrypt.org adalah sumber nirlaba yang sah, diakui, dan nirlaba untuk sertifikat SSL gratis yang dapat Anda pasang di mana pun Anda suka. (Dan, saya mungkin menambahkan, saya tidak memiliki afiliasi dengan Let's Encrypt.)
Michael - sqlbot
6
@EngineerDollery tidak, itu hanya berlaku untuk satu kasus tertentu. Anda benar - benar dapat menggunakan Let's Encrypt di EC2. Apa yang tidak dapat Anda lakukan adalah mendapatkan sertifikat Let's Encrypt untuk *.amazonaws.comnama host EC2 karena, cukup masuk akal, kebijakan Let's Encrypt tidak mengizinkannya ... tetapi untuk domain yang Anda kontrol yang mengarah ke IP instans EC2, atau ELB, atau CloudFront, Anda pasti bisa menggunakan Let's Encrypt, sama seperti di tempat lain.
Michael - sqlbot
2
Tautkan ke contoh dengan sertifikat izinkan
Efren
Saya mengikuti dengan pengaturan ELB semuanya sekarang saya mendapatkan 502 Bad Gateway ketika saya menunjukkan rekor A ke ELB
MuaathAli
2

Tidak, Anda tidak dapat menggunakan manajer sertifikat aws untuk menyebarkan sertifikat di EC2. Sertifikat pengelola sertifikat hanya dapat diterapkan pada cloudfront dan penyeimbang beban elastis. Untuk menggunakannya di ec2, Anda harus meletakkan elb di atas ec2, sehingga permintaan dari klien ke load balancer akan dilindungi https dan dari elb ke server web ec2 akan ada di http.

prasoon
sumber
1

Jika Anda menggunakan AWS ACM Cert untuk tujuan internal saja, maka Anda mungkin dapat menggunakan AWS ACM Private CA untuk menerbitkan sertifikat. (Saya rasa Anda juga dapat menggunakannya untuk tujuan lalu lintas publik / eksternal jika CA root Anda adalah CA yang dipercaya secara publik).

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

Selama startup Aplikasi / EC2 / Kontainer, setel langkah untuk mengekspor Cert / Private Key yang dikeluarkan ACM Private CA ke tujuan Anda dan mulai merujuknya untuk melayani lalu lintas.

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

Satu hal yang baik adalah, Anda dapat mengontrol siapa yang dapat memanggil fitur ekspor sertifikat menggunakan Peran IAM sehingga tidak semua orang dapat mengunduh kunci pribadi dari sertifikat tersebut.

Satu kekurangannya adalah, CA pribadi adalah layanan AWS yang mahal ($ 400 / bulan). https://aws.amazon.com/certificate-manager/pricing/

Imran
sumber
Anda tidak dapat menggunakan sertifikat ekspor dengan ACM PCA - tetapi Anda juga tidak memerlukannya: Anda sudah memiliki kunci privat, dan get-certificate memberikan sertifikat dan rantai.
Gratis Willaert
@FreeWillaert Saya cukup yakin, Anda tidak akan mendapatkan bagian Private Key dengan get-certificate. periksa dokumentasi CLI ini . dan ini . Periksa kedua keluaran tanggapan cli. Saya sudah menguji perintah CLI ini.
Imran
@FreeWilla ya :). Perintah CLI di atas dapat digunakan dalam skrip startup Docker atau skrip data pengguna EC2 untuk mengunduh sertifikat kunci pribadi dalam runtime dan mulai menggunakannya untuk melayani lalu lintas TLS. Khususnya di ASG. Bagian baiknya adalah Anda dapat mengontrol siapa yang dapat memanggil perintah CLI di atas menggunakan peran IAM sehingga tidak semua orang memiliki akses ke kunci pribadi.
Imran
1
@Imran Anda harus menulis tebal One downside with this is, private CA is expensive AWS service($400/month).di bagian atas karena misalnya saya akan melewatkannya jika saya tidak membaca jawaban ini untuk kedua kalinya
Piekarski D
@Piekhard selesai. Terima kasih untuk sarannya!!. jika Anda menyukai jawaban saya, Anda dapat selalu memberi suara positif !!.
Imran
0

Menambahkan ke komentar di atas, Anda tidak dapat menggunakan AWS Certificate Manager untuk ini, tetapi Anda dapat menambahkan sertifikat Let's Encrypt ke ec2 di server Windows yang menjalankan IIS dan itu cukup mudah:

  1. Kaitkan ip elastis dengan instance ec2 Anda.

  2. Pastikan Anda memiliki domain terdaftar. Anda tidak dapat menggunakan nama jenis ec2----------.us-east-1.compute.amazonaws.com yang disertakan dengan instance Anda.

  3. Melalui setelan DNS penyedia domain Anda, arahkan domain Anda ke Elastic IP.

  4. Hubungkan ke instance ec2 Anda dan tambahkan nama domain Anda ke binding situs.

  5. Buka https://github.com/PKISharp/win-acme/releases

  6. Lihat di bawah aset, dan gunakan versi terbaru (win-acme.v2.0.10.444.zip misalnya). Ini adalah satu-satunya folder aset yang Anda butuhkan.

  7. Buka zip folder, buka terminal sebagai administrator, dan cd ke folder yang sudah dibuka.

  8. Jalankan wacs.exe dan ikuti petunjuknya.

  9. Pastikan grup keamanan yang ditetapkan untuk instans Anda mengizinkan lalu lintas (setidaknya IP Anda sendiri) melalui port HTTPS yang Anda pilih di IIS; ini adalah port 443 secara default.

Saya menemukan tautan di bawah berguna ketika saya memikirkannya. Berikut adalah video yang menggunakan rilis sebelumnya jika Anda memerlukan bantuan lebih lanjut, tetapi idenya sama.

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

Juga artikel ini mungkin bisa membantu:

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

Tuan J
sumber