Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Konfigurasikan SSL/TLS di Amazon Linux AMI
catatan
Amazon Linux 1 (AL1sebelumnya Amazon Linux AMI) tidak lagi didukung. Panduan ini hanya tersedia untuk tujuan referensi.
Secure Sockets Layer/Transport Layer Security (SSL/TLS) creates an encrypted channel
between a web server and web client that protects data in transit from being eavesdropped
on. This tutorial explains how to add support manually for SSL/TLSpada EC2 instance dengan Amazon Linux AMI dan server web Apache. Tutorial ini mengasumsikan bahwa Anda tidak menggunakan penyeimbang beban. Jika menggunakan Elastic Load Balancing, Anda dapat memilih untuk mengonfigurasi pemindahan SSL pada penyeimbang beban dengan menggunakan sertifikat dari AWS Certificate Manager
Untuk alasan historis, enkripsi web sering disebut hanya sebagai SSL. Meskipun peramban web masih mendukung SSL, protokol penerusnya, TLS, lebih aman dari serangan. AMI Amazon Linux menonaktifkan dukungan sisi server untuk semua versi SSL secara default. Badan standar keamanan
Tutorial ini mengacu pada enkripsi web modern hanya sebagai TLS.
penting
Prosedur ini ditujukan untuk digunakan dengan AMI Amazon Linux. Jika Anda mencoba untuk mengatur server web LAMP pada sebuah instans dengan distribusi yang berbeda, beberapa prosedur dalam tutorial ini mungkin bukan untuk Anda. Untuk AL2, lihat Mengkonfigurasi SSL/TLS pada AL2. Untuk Ubuntu, lihat dokumentasi komunitas berikut ini: Buka SSL di Ubuntu
catatan
Atau, Anda dapat menggunakan AWS Certificate Manager (ACM) untuk kantong AWS Nitro, yang merupakan aplikasi enclave yang memungkinkan Anda menggunakan SSL/TLS sertifikat publik dan pribadi dengan aplikasi web dan server Anda yang berjalan di instans Amazon dengan Nitro Enclave. EC2 AWS Nitro Enclave adalah EC2 kemampuan Amazon yang memungkinkan pembuatan lingkungan komputasi terisolasi untuk melindungi dan memproses data yang sangat sensitif dengan aman, seperti SSL/TLS sertifikat dan kunci pribadi.
ACM for Nitro Enclave bekerja dengan nginx yang berjalan di instans Amazon EC2 Linux Anda untuk membuat kunci pribadi, mendistribusikan sertifikat dan kunci pribadi, dan mengelola perpanjangan sertifikat.
Untuk menggunakan ACM for Nitro Enclave, Anda harus menggunakan instans Linux mendukung enclave.
Untuk informasi lebih lanjut, lihat Apa itu Enklaf AWS Nitro? dan AWS Certificate Manageruntuk Enklaf Nitro di Panduan Pengguna AWSNitro Enclave.
Daftar Isi
Prasyarat
Sebelum memulai tutorial ini, selesaikan langkah-langkah berikut:
-
Luncurkan instans yang didukung EBS menggunakan AMI Amazon Linu. Untuk informasi selengkapnya, lihat Meluncurkan instance di Panduan EC2 Pengguna Amazon.
-
Konfigurasikan grup keamanan Anda untuk memungkinkan instans menerima koneksi pada port TCP berikut:
-
SSH (port 22)
-
HTTP (port 80)
-
HTTPS (port 443)
Untuk informasi selengkapnya, lihat Aturan grup keamanan di Panduan EC2 Pengguna Amazon.
-
-
Instal server web Apache. Untuk step-by-step petunjuk, lihat Tutorial: Menginstal Server Web LAMP di Amazon Linux. Hanya paket http24 dan dependensinya yang diperlukan, jadi Anda dapat mengabaikan instruksi yang melibatkan PHP dan MySQL.
-
Untuk mengidentifikasi dan mengautentikasi situs web, infrastruktur kunci publik (PKI) TLS mengandalkan Sistem Nama Domain (DNS). Untuk menggunakan EC2 instans Anda untuk meng-host situs web publik, Anda perlu mendaftarkan nama domain untuk server web Anda atau mentransfer nama domain yang ada ke EC2 host Amazon Anda. Berbagai pendaftaran domain pihak ketiga dan layanan hosting DNS tersedia untuk ini, atau Anda dapat menggunakan Amazon Route 53.
Langkah 1: Aktifkan TLS di server
Opsi: Selesaikan tutorial ini menggunakan otomatisasi
Untuk menyelesaikan tutorial ini menggunakan AWS Systems Manager alih-alih tugas-tugas berikut, jalankan dokumen otomatisasi
Prosedur ini membawa Anda melewati proses pengaturan TLS di Amazon Linux dengan sertifikat digital yang ditandatangani sendiri.
catatan
Sertifikat yang ditandatangani sendiri dapat diterima untuk pengujian, tetapi bukan produksi. Jika Anda menampilkan sertifikat yang ditandatangani sendiri ke internet, pengunjung ke situs Anda disambut oleh peringatan keamanan.
Untuk mengaktifkan TLS di server
-
Sambungkan ke instans Anda dan konfirmasi bahwa Apache sedang berjalan.
[ec2-user ~]$sudo service httpd statusJika perlu, mulai Apache.
[ec2-user ~]$sudo service httpd start -
Untuk memastikan bahwa semua paket perangkat lunak Anda telah diperbarui, lakukan pembaruan perangkat lunak cepat di instans Anda. Proses ini mungkin memerlukan waktu beberapa menit, tetapi proses ini penting untuk memastikan bahwa Anda memiliki pembaruan keamanan dan perbaikan bug terbaru.
catatan
Opsi
-ymenginstal pembaruan tanpa meminta konfirmasi. Jika Anda ingin memeriksa pembaruan sebelum menginstal, Anda dapat menghapus opsi ini.[ec2-user ~]$sudo yum update -y -
Setelah instans Anda diperbarui, tambahkan dukungan TLS dengan menginstal modul Apache
mod_ssl.[ec2-user ~]$sudo yum install -y mod_sslInstans Anda sekarang memiliki file berikut yang Anda gunakan untuk mengonfigurasi server aman dan membuat sertifikat untuk pengujian:
/etc/httpd/conf.d/ssl.confFile konfigurasi untuk mod_ssl. File tersebut berisi “arahan” yang memberi tahu Apache tempat untuk menemukan kunci dan sertifikat enkripsi, versi protokol TLS yang akan dimungkinkan, dan cipher enkripsi yang akan diterima.
/etc/pki/tls/private/localhost.keyKunci pribadi RSA 2048-bit yang dihasilkan secara otomatis untuk host Amazon Anda. EC2 Selama instalasi, OpenSSL menggunakan kunci ini untuk menghasilkan sebuah sertifikat host yang ditandatangani sendiri, dan Anda juga dapat menggunakan kunci ini untuk menghasilkan permintaan penandatanganan sertifikat (CSR) untuk dikirimkan ke otoritas sertifikasi (CA).
/etc/pki/tls/certs/localhost.crtSertifikat X.509 yang dihasilkan secara otomatis dan ditandatangani sendiri untuk host server Anda. Sertifikat ini berguna untuk menguji apakah Apache telah diatur dengan benar untuk menggunakan TLS.
Baik file
.keymaupun.crtberformat PEM, yang terdiri dari karakter ASCII berenkode Base64 yang dibingkai dengan baris “BEGIN” dan “END”, seperti dalam contoh singkat sertifikat ini:-----BEGIN CERTIFICATE----- MIIEazCCA1OgAwIBAgICWxQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAi0t MRIwEAYDVQQIDAlTb21lU3RhdGUxETAPBgNVBAcMCFNvbWVDaXR5MRkwFwYDVQQK DBBTb21lT3JnYW5pemF0aW9uMR8wHQYDVQQLDBZTb21lT3JnYW5pemF0aW9uYWxV bml0MRkwFwYDVQQDDBBpcC0xNzItMzEtMjAtMjM2MSQwIgYJKoZIhvcNAQkBFhVy ... z5rRUE/XzxRLBZOoWZpNWTXJkQ3uFYH6s/sBwtHpKKZMzOvDedREjNKAvk4ws6F0 WanXWehT6FiSZvB4sTEXXJN2jdw8g+sHGnZ8zCOsclknYhHrCVD2vnBlZJKSZvak 3ZazhBxtQSukFMOnWPP2a0DMMFGYUHOd0BQE8sBJxg== -----END CERTIFICATE-----Nama dan ekstensi file tidak perlu dipusingkan dan tidak berpengaruh pada fungsi; Anda dapat menyebut sertifikat
cert.crt,cert.pem, atau nama file lainnya, selama arahan terkait dalam filessl.confmenggunakan nama yang sama.catatan
Ketika Anda mengganti file TLS default dengan file kustom milik Anda sendiri, pastikan file tersebut dalam format PEM.
-
Mulai Ulang Apache.
[ec2-user ~]$sudo service httpd restart -
Server web Apache Anda sekarang dapat mendukung HTTPS (HTTP aman) melalui port 443. Uji dengan mengetikkan alamat IP atau nama domain yang sepenuhnya memenuhi syarat dari EC2 instans Anda ke dalam bilah URL browser dengan awalan
https://. Karena Anda terhubung ke situs dengan sertifikat host yang ditandatangani sendiri dan tidak tepercaya, peramban Anda dapat menampilkan serangkaian peringatan keamanan.Abaikan peringatan tersebut dan lanjutkan ke situs. Jika halaman uji Apache default terbuka, berarti Anda telah berhasil mengonfigurasi TLS di server Anda. Semua data yang masuk antara peramban dan server sekarang terenkripsi dengan aman.
Untuk mencegah pengunjung situs menghadapi layar peringatan, Anda harus mendapatkan sertifikat tepercaya yang ditandatangani CA dan tidak hanya mengenkripsi, tetapi juga mengautentikasi Anda sebagai pemilik situs.
Langkah 2: Mendapatkan sertifikat yang ditandatangani CA
Anda dapat menggunakan proses berikut untuk mendapatkan sertifikat yang ditandatangani CA:
-
Membuat permintaan penandatanganan sertifikat (CSR) dari kunci privat
-
Kirim CSR ke otoritas sertifikasi (CA)
-
Dapatkan sertifikat host yang ditandatangani
-
Konfigurasikan Apache untuk menggunakan sertifikat
Sertifikat host TLS X.509 yang ditandatangani sendiri bersifat identik secara kriptologi dengan sertifikat yang ditandatangani CA. Perbedaannya bersifat sosial, bukan matematis; CA berjanji untuk memvalidasi, setidaknya, kepemilikan domain sebelum menerbitkan sertifikat kepada pemohon. Setiap browser web berisi daftar yang CAs dipercaya oleh vendor browser untuk melakukan hal ini. Sertifikat X.509 utamanya terdiri dari kunci publik yang sesuai dengan kunci server privat Anda, dan tanda tangan oleh CA yang terhubung secara kriptografi dengan kunci publik. Ketika browser terhubung ke server web melalui HTTPS, server menyajikan sertifikat untuk browser untuk memeriksa daftar tepercaya CAs. Jika penandatangan ada di daftar, atau dapat diakses melalui rantai kepercayaan yang terdiri dari penanda tangan tepercaya lainnya, peramban menegosiasikan saluran data terenkripsi cepat dengan server dan memuat halaman.
Sertifikat umumnya memerlukan biaya karena tenaga kerja yang terlibat dalam memvalidasi permintaan tersebut, jadi tidak masalah untuk mempertimbangkan berbagai kemungkinan. Beberapa CAs menawarkan sertifikat tingkat dasar secara gratis. Yang paling menonjol dari ini CAs adalah proyek Let's Encrypt
Jika Anda berencana untuk menawarkan layanan kelas komersial, AWS Certificate Manager adalah pilihan yang baik.
Yang mendasari sertifikat host adalah kuncinya. Mulai tahun 2017, beberapa grup pemerintah
Instruksi untuk memperoleh sertifikat host yang ditandatangani CA ini tidak berfungsi kecuali Anda memiliki domain DNS yang terdaftar dan di-hosting.
Untuk mendapatkan sertifikat yang ditandatangani CA
-
Connect ke instans Anda dan navigasikan ke/etc/pki/tls/private/. Ini adalah direktori tempat Anda menyimpan kunci privat server untuk TLS disimpan. Jika Anda memilih untuk menggunakan kunci host yang ada guna membuat CSR, lewati ke Langkah 3.
-
(Opsional) Buat kunci privat baru. Berikut ini adalah beberapa contoh konfigurasi kunci. Setiap kunci yang dihasilkan akan berfungsi untuk server web Anda, tetapi kunci tersebut bervariasi dalam cara (dan jumlah) pelaksanaan keamanan.
-
Contoh 1: Buat kunci host RSA default. File yang dihasilkan,
custom.key, adalah kunci privat RSA 2048-bit.[ec2-user ~]$sudo openssl genrsa -out custom.key -
Contoh 2: Buat kunci RSA yang lebih kuat dengan modulus yang lebih besar. File yang dihasilkan,
custom.key, adalah kunci privat RSA 4096-bit.[ec2-user ~]$sudo openssl genrsa -out custom.key 4096 -
Contoh 3: Buat kunci RSA yang dienkripsi 4096-bit dengan perlindungan kata sandi. File yang dihasilkan,
custom.key, adalah kunci privat RSA 4096-bit yang dienkripsi dengan cipher AES-128.penting
Mengenkripsi kunci akan memberikan keamanan yang lebih besar, tetapi karena kunci terenkripsi memerlukan kata sandi, layanan yang bergantung pada kata sandi tersebut tidak dapat dimulai secara otomatis. Setiap kali menggunakan kunci ini, Anda harus memberikan kata sandi (dalam contoh sebelumnya, "abcde12345") melalui koneksi SSH.
[ec2-user ~]$sudo openssl genrsa -aes128 -passout pass:abcde12345 -out custom.key 4096 -
Contoh 4: Buat kunci menggunakan cipher non-RSA. Kriptografi RSA dapat menjadi cukup lambat karena ukuran kunci publiknya, yang didasarkan pada produk dua angka utama yang besar. Namun, kunci untuk TLS yang menggunakan cipher non-RSA masih dapat dibuat. Kunci-kunci berdasarkan matematika kurva eliptik ukurannya lebih kecil dan secara komputasi lebih cepat ketika memberikan tingkat keamanan yang setara.
[ec2-user ~]$sudo openssl ecparam -name prime256v1 -out custom.key -genkeyHasilnya adalah kunci privat kurva eliptik 256-bit menggunakan prime256v1, "kurva yang diberi nama" yang didukung OpenSSL. Kekuatan kriptografinya sedikit lebih besar dari kunci RSA 2048-bit, menurut NIST
. catatan
Tidak semua CAs memberikan tingkat dukungan yang sama untuk elliptic-curve-based kunci seperti untuk kunci RSA.
Pastikan bahwa kunci pribadi baru memiliki kepemilikan dan izin yang sangat ketat (owner=root, group=root, hanya untuk pemilik). read/write Perintahnya akan seperti berikut:
[ec2-user ~]$sudo chown root.root custom.key[ec2-user ~]$sudo chmod 600 custom.key[ec2-user ~]$ls -al custom.keyPerintah di atas akan memberikan hasil seperti berikut:
-rw------- root root custom.keySetelah membuat dan mengonfigurasikan kunci yang memuaskan, Anda dapat membuat CSR.
-
-
Buat CSR menggunakan kunci yang Anda sukai; contoh di bawah ini menggunakan
custom.key:[ec2-user ~]$sudo openssl req -new -key custom.key -out csr.pemOpenSSL membuka dialog dan meminta Anda memasukkan informasi yang ditampilkan dalam tabel berikut. Semua kolom kecuali Nama Umum adalah opsional untuk sertifikat host dasar yang divalidasi domain.
Nama Deskripsi Contoh Nama Negara Singkatan ISO dua huruf untuk negara Anda. AS (=Amerika Serikat) Nama Negara Bagian atau Provinsi Nama negara bagian atau provinsi tempat organisasi Anda berada. Nama ini tidak boleh disingkat. Washington Nama Lokal Lokasi organisasi Anda, contohnya suatu kota. Seattle Nama Organisasi Nama lengkap legal organisasi Anda. Jangan menyingkat nama organisasi Anda. Contoh Perusahaan Nama Unit Organisasi Informasi tambahan tentang organisasi, jika ada. Contoh Departemen Nama Umum Nilai ini harus sama persis dengan alamat web yang Anda harapkan akan dimasukkan pengguna ke peramban. Biasanya, ini berarti nama domain dengan nama host atau alias prefiks dalam bentuk
www.example.com. Dalam pengujian dengan sertifikat yang ditandatangani sendiri dan tidak ada resolusi DNS, nama umum dapat terdiri dari nama host saja. CAs juga menawarkan sertifikat yang lebih mahal yang menerima nama kartu liar seperti.*.example.comwww.example.com Alamat Email Alamat email administrator server. someone@example.com Terakhir, OpenSSL meminta kata sandi tantangan opsional dari Anda. Kata sandi ini hanya berlaku untuk CSR dan transaksi antara Anda dan CA Anda, maka ikutilah rekomendasi CA tentang hal ini dan bidang pilihan lainnya, nama perusahaan opsional. Kata sandi tantangan CSR tidak berpengaruh pada operasi server.
File yang dihasilkan
csr.pemberisi kunci publik, tanda tangan digital kunci publik Anda, dan metadata yang Anda masukkan. -
Kirimkan CSR ke CA. Hal ini biasanya mencakup membuka file CSR Anda dalam sebuah editor teks dan menyalin konten ke dalam bentuk web. Pada saat ini, Anda mungkin diminta untuk memberikan satu atau lebih nama alternatif subjek (SANs) untuk ditempatkan pada sertifikat. Jika
www.example.commerupakan nama umum,example.comakan menjadi SAN yang baik dan sebaliknya. Pengunjung ke situs Anda yang mengetik nama-nama ini akan melihat koneksi tanpa kesalahan. Jika formulir web CA Anda mengizinkannya, sertakan nama umum dalam daftar SANs. Beberapa CAs memasukkannya secara otomatis.Setelah permintaan Anda disetujui, Anda menerima sertifikat host baru yang ditandatangani oleh CA. Anda mungkin juga diminta mengunduh file sertifikat menengah yang berisi sertifikat tambahan yang diperlukan untuk melengkapi rantai kepercayaan CA.
catatan
CA Anda mungkin mengirimi file dalam banyak format yang dimaksudkan untuk berbagai tujuan. Untuk tutorial ini, Anda hanya dapat menggunakan file sertifikat dalam format PEM, yang biasanya (tetapi tidak selalu) ditandai dengan ekstensi
.pematau.crt. Jika Anda tidak yakin file mana yang akan digunakan, buka file dengan editor teks dan temukan yang berisi satu atau beberapa blok yang dimulai dengan baris berikut:- - - - -BEGIN CERTIFICATE - - - - -File juga harus diakhiri dengan baris berikut:
- - - -END CERTIFICATE - - - - -Anda juga dapat menguji file pada baris perintah seperti berikut ini:
[ec2-user certs]$openssl x509 -incertificate.crt-textPastikan baris ini muncul di file. Jangan gunakan file yang diakhiri dengan
.p7b,.p7c, atau ekstensi file serupa. -
Letakkan sertifikat baru yang ditandatangani CA dan setiap sertifikat menengah di direktori
/etc/pki/tls/certs.catatan
Ada beberapa cara untuk mengunggah kunci kustom Anda ke EC2 instans Anda, tetapi cara yang paling mudah dan informatif adalah dengan membuka editor teks (misalnya, vi, nano, atau notepad) di komputer lokal dan instance Anda, lalu salin dan tempel konten file di antara mereka. Anda memerlukan izin root [sudo] saat melakukan operasi ini pada instance. EC2 Dengan cara ini, Anda dapat segera melihat apakah ada masalah perizinan atau jalur. Namun, berhati-hatilah untuk tidak menambahkan baris tambahan saat menyalin konten, atau untuk mengubahnya dengan cara apa pun.
Dari dalam
/etc/pki/tls/certsdirektori, gunakan perintah berikut untuk memverifikasi bahwa kepemilikan file, grup, dan pengaturan izin cocok dengan default Amazon Linux yang sangat ketat (owner=root, group=root, hanya untuk pemilik). read/write[ec2-user certs]$sudo chown root.root custom.crt[ec2-user certs]$sudo chmod 600 custom.crt[ec2-user certs]$ls -al custom.crtPerintah di atas seharusnya memberikan hasil berikut:
-rw------- root root custom.crtIzin untuk file sertifikat menengah tidak terlalu ketat (pemilik=root, grup=root, pemilik dapat menulis, grup dapat membaca, dunia dapat membaca). Perintahnya akan menjadi:
[ec2-user certs]$sudo chown root.root intermediate.crt[ec2-user certs]$sudo chmod 644 intermediate.crt[ec2-user certs]$ls -al intermediate.crtPerintah di atas akan memberikan hasil seperti berikut:
-rw-r--r-- root root intermediate.crt -
Jika Anda menggunakan sebuah kunci kustom untuk menciptakan CSR dan sertifikat host yang dihasilkan, hapus atau ubah nama kunci lama dari direktori
/etc/pki/tls/private/, lalu instal kunci baru di sana.catatan
Ada beberapa cara untuk mengunggah kunci kustom Anda ke EC2 instans Anda, tetapi cara yang paling mudah dan informatif adalah dengan membuka editor teks (vi, nano, notepad, dll.) di komputer lokal dan instance Anda, lalu salin dan tempel konten file di antara mereka. Anda memerlukan hak akses root [sudo] saat melakukan operasi ini pada instance. EC2 Dengan cara ini, Anda dapat segera melihat apakah ada masalah perizinan atau jalur. Namun, berhati-hatilah untuk tidak menambahkan baris tambahan saat menyalin konten, atau untuk mengubahnya dengan cara apa pun.
Dari dalam
/etc/pki/tls/privatedirektori, periksa apakah pengaturan kepemilikan file, grup, dan izin cocok dengan default Amazon Linux yang sangat ketat (owner=root, group=root, hanya untuk pemilik). read/write Perintahnya akan seperti berikut:[ec2-user private]$sudo chown root.root custom.key[ec2-user private]$sudo chmod 600 custom.key[ec2-user private]$ls -al custom.keyPerintah di atas akan memberikan hasil seperti berikut:
-rw------- root root custom.key -
Edit
/etc/httpd/conf.d/ssl.confuntuk merefleksikan sertifikat dan file kunci baru Anda.-
Berikan jalur dan nama file sertifikat host yang ditandatangani CA dalam arahan
SSLCertificateFileApache:SSLCertificateFile /etc/pki/tls/certs/custom.crt -
Jika Anda menerima file sertifikat menengah (
intermediate.crtdalam contoh ini), berikan jalur dan nama file menggunakan arahanSSLCACertificateFileApache:SSLCACertificateFile /etc/pki/tls/certs/intermediate.crtcatatan
Beberapa CAs menggabungkan sertifikat host dan sertifikat perantara dalam satu file, membuat arahan ini tidak perlu. Baca petunjuk yang diberikan oleh CA Anda.
-
Berikan jalur dan nama file kunci privat dalam arahan
SSLCertificateKeyFileApache:SSLCertificateKeyFile /etc/pki/tls/private/custom.key
-
-
Simpan
/etc/httpd/conf.d/ssl.confdan mulai ulang Apache.[ec2-user ~]$sudo service httpd restart -
Uji server Anda dengan memasukkan nama domain ke dalam bilah URL peramban menggunakan prefiks
https://. Peramban Anda harus memuat halaman uji melalui HTTPS tanpa menghasilkan kesalahan.
Langkah 3: Menguji dan memperkuat konfigurasi keamanan
Setelah TLS Anda beroperasi dan terbuka ke publik, Anda harus menguji seberapa kuat TLS itu sesungguhnya. Hal ini mudah dilakukan menggunakan layanan daring seperti Qualys SSL Labs
penting
Pengujian di dunia nyata sangat penting untuk keamanan server Anda. Kesalahan konfigurasi kecil dapat menyebabkan pelanggaran keamanan serius dan hilangnya data. Karena praktik keamanan yang direkomendasikan terus berubah sebagai respons terhadap penelitian dan ancaman yang muncul, audit keamanan secara berkala sangat penting untuk administrasi server yang baik.
Pada situs Qualys SSL Labswww.example.com. Setelah sekitar dua menit, Anda menerima nilai (dari A sampai F) untuk situs Anda dan detail perincian dari temuan. Meskipun gambaran umum menunjukkan bahwa konfigurasi sebagian besar baik, laporan terperinci menunjukkan beberapa potensi masalah. Contoh:
✗ RC4 Cipher didukung untuk digunakan oleh browser lama tertentu. Sebuah cipher adalah inti matematika dari algoritma enkripsi. RC4, cipher cepat yang digunakan untuk mengenkripsi aliran data TLS, diketahui memiliki beberapa kelemahan serius.
✗ Versi TLS lama dapat didukung. Konfigurasi ini mendukung TLS 1.0 (sudah usang) dan TLS 1.1 (akan usang). Hanya TLS 1.2 yang telah direkomendasikan sejak 2018.
Untuk mengoreksi konfigurasi TLS
-
Buka file konfigurasi
/etc/httpd/conf.d/ssl.confdalam editor teks dan berikan komentar pada baris berikut dengan memasukkan “#” di awal setiap baris:#SSLProtocol all -SSLv3 #SSLProxyProtocol all -SSLv3 -
Tambahkan arahan berikut:
SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 SSLProxyProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2Arahan ini secara eksplisit menonaktifkan SSL versi 2 dan 3, serta TLS versi 1.0 dan 1.1. Server sekarang menolak untuk menerima koneksi terenkripsi dengan klien menggunakan apa pun selain TLS 1.2. Kata yang bertele-tele dalam arahan, bagi pembaca manusia, justru mengungkapkan dengan lebih jelas tentang apa yang akan dilakukan server sesuai konfigurasinya.
catatan
Menonaktifkan TLS versi 1.0 dan 1.1 dengan cara ini akan memblokir sebagian kecil peramban web lama dari akses ke situs Anda.
Untuk mengubah daftar cipher yang diperbolehkan
-
Buka file konfigurasi
/etc/httpd/conf.d/ssl.confdan temukan bagian dengan contoh yang dikomentari untuk mengonfigurasiSSLCipherSuitedanSSLProxyCipherSuite.#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 #SSLProxyCipherSuite HIGH:MEDIUM:!aNULL:!MD5Tinggalkan apa adanya, dan di bawahnya tambahkan arahan berikut:
catatan
Meskipun ditampilkan di sini dalam beberapa baris untuk kemudahan membaca, setiap kedua arahan ini harus berada dalam satu baris tanpa spasi di antara nama-nama cipher.
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384: ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES:!aNULL:!eNULL:!EXPORT:!DES: !RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLProxyCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384: ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES:!aNULL:!eNULL:!EXPORT:!DES: !RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHACipher ini adalah sebuah subset dari daftar cipher yang didukung lebih lama di OpenSSL. Mereka dipilih dan dipesan sesuai dengan kriteria berikut:
-
Dukungan untuk forward secrecy
-
Kekuatan
-
Kecepatan
-
Cipher spesifik sebelum kumpulan cipher
-
Cipher yang diizinkan sebelum ciphers yang ditolak
Cipher berperingkat tinggi memiliki ECDHE dalam nama mereka, yaitu singkatan dari Elliptic Curve Diffie-Hellman Ephemeral; ephemeral mengindikasikan forward secrecy. Juga, RC4 sekarang di antara cipher terlarang menjelang akhir.
Sebaiknya Anda menggunakan daftar cipher secara eksplisit daripada mengandalkan arahan yang ringkas atau default yang kontennya tidak terlihat. Daftar cipher yang ditampilkan di sini hanyalah salah satu dari banyaknya kemungkinan daftar; misalnya, mungkin Anda ingin mengoptimalkan daftar untuk kecepatan daripada forward secrecy.
Jika Anda mengantisipasi kebutuhan untuk mendukung klien yang lebih tua, Anda dapat mengizinkan suite cipher DES- CBC3 -SHA.
Setiap pembaruan pada OpenSSL memperkenalkan cipher baru dan tidak lagi menggunakan yang lama. Perbarui instans EC2 Amazon Linux Anda, perhatikan pengumuman keamanan dari OpenSSL
, dan waspada terhadap laporan eksploitasi keamanan baru di pers teknis. -
-
Hapus komentar baris berikut dengan menghapus “#”:
#SSLHonorCipherOrder onPerintah ini memaksa server untuk lebih memilih cipher berperingkat tinggi, termasuk (dalam hal ini) cipher yang mendukung forward secrecy. Dengan arahan yang diaktifkan ini, server mencoba membangun koneksi aman yang kuat sebelum kembali ke cipher yang diizinkan dengan keamanan lebih rendah.
-
Mulai Ulang Apache. Jika Anda menguji domain lagi di Qualys SSL Labs
, Anda akan melihat bahwa RC4 kerentanannya hilang.
Pemecahan Masalah
-
Server web My Apache tidak memulai kecuali jika saya memasukkan kata sandi
Ini adalah perkiraan perilaku jika Anda menginstal kunci server privat yang dienkripsi dan dilindungi dengan kata sandi.
Anda dapat menghapus persyaratan enkripsi dan kata sandi dari kunci. Dengan asumsi bahwa Anda memiliki kunci RSA terenkripsi pribadi yang disebut
custom.keydi direktori default, dan kata sandi di dalamnyaabcde12345, jalankan perintah berikut pada EC2 instance Anda untuk menghasilkan versi kunci yang tidak terenkripsi.[ec2-user ~]$cd /etc/pki/tls/private/[ec2-user private]$sudo cp custom.key custom.key.bak[ec2-user private]$sudo openssl rsa -in custom.key -passin pass:abcde12345 -out custom.key.nocrypt[ec2-user private]$sudo mv custom.key.nocrypt custom.key[ec2-user private]$sudo chown root.root custom.key[ec2-user private]$sudo chmod 600 custom.key[ec2-user private]$sudo service httpd restartApache sekarang akan mulai tanpa meminta kata sandi Anda.