Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: SSL TLS Konfigurasikan/pada AL2 023
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/TLS pada EC2 instance dengan AL2 023 dan server web Apache. Tutorial ini mengasumsikan bahwa Anda tidak menggunakan penyeimbang beban. Jika Anda menggunakan Elastic Load Balancing, Anda dapat memilih untuk mengkonfigurasi SSL offload pada load balancer, menggunakan sertifikat dari sebagai gantinya. AWS Certificate Manager
Untuk alasan historis, enkripsi web sering disebut hanya sebagaiSSL. Sementara browser web masih mendukungSSL, protokol penggantinya TLS kurang rentan terhadap serangan. AL2023 menonaktifkan dukungan sisi server untuk semua versi secara default. SSL Badan standar keamanan
Tutorial ini mengacu pada enkripsi web modern hanya sebagaiTLS.
penting
Prosedur ini dimaksudkan untuk digunakan dengan AL2 023. Jika Anda mencoba menyiapkan EC2 instance yang menjalankan distribusi yang berbeda, atau instance yang menjalankan Amazon Linux versi lama, beberapa prosedur dalam tutorial ini mungkin tidak berfungsi. Untuk Ubuntu, lihat dokumentasi komunitas Ubuntu berikut: 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 TLS sertifikat publik dan SSL privat dengan aplikasi web dan server Anda yang berjalan di instans Amazon EC2 dengan Nitro Enclave. AWS Nitro Enclave adalah EC2 kemampuan Amazon yang memungkinkan pembuatan lingkungan komputasi terisolasi untuk melindungi dan memproses data yang sangat sensitif dengan aman, SSL TLS seperti/sertifikat dan kunci pribadi.
ACMuntuk Nitro Enclave bekerja dengan nginx yang berjalan di instans EC2 Amazon Linux Anda untuk membuat kunci pribadi, mendistribusikan sertifikat dan kunci pribadi, dan mengelola perpanjangan sertifikat.
ACMUntuk menggunakan Nitro Enclave, Anda harus menggunakan instance Linux berkemampuan enclave.
Untuk informasi lebih lanjut, lihat Apa itu Enklaf AWS Nitro? dan AWS Certificate Manager untuk Enklaf Nitro di Panduan Pengguna AWS Nitro Enclave.
Daftar Isi
Prasyarat
Sebelum memulai tutorial ini, selesaikan langkah-langkah berikut:
-
Luncurkan instance EBS AL2 023 yang didukung. Untuk informasi selengkapnya, lihat AL2023 di Amazon EC2.
-
Konfigurasikan grup keamanan Anda agar instans Anda dapat menerima koneksi pada TCP port berikut:
-
SSH(pelabuhan 22)
-
HTTP(pelabuhan 80)
-
HTTPS(pelabuhan 443)
Untuk informasi selengkapnya, lihat Mengotorisasi lalu lintas masuk untuk instans Linux Anda di Panduan Pengguna Amazon EC2.
-
-
Instal server web Apache. Untuk step-by-step instruksi, lihatTutorial: Instal LAMP server pada AL2 023. Hanya paket httpd dan dependensinya yang diperlukan, sehingga Anda dapat mengabaikan instruksi yang melibatkan dan PHP MariaDB.
-
Untuk mengidentifikasi dan mengautentikasi situs web, infrastruktur kunci TLS publik (PKI) bergantung pada 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. Banyak pendaftaran domain pihak ketiga dan layanan DNS hosting tersedia untuk ini, atau Anda dapat menggunakan Amazon Route 53.
Langkah 1: Aktifkan TLS di server
Prosedur ini membawa Anda melalui proses pengaturan TLS pada AL2 023 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. Untuk informasi selengkapnya, lihat Menghubungkan ke AL2 instans 023.
[ec2-user ~]$
sudo systemctl is-enabled httpd
Jika nilai yang dikembalikan bukan "diaktifkan", mulai Apache dan atur Apache untuk memulai setiap kali sistem booting.
[ec2-user ~]$
sudo systemctl start httpd && sudo systemctl enable httpd
-
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 penting untuk memastikan bahwa Anda memiliki pembaruan keamanan dan perbaikan bug terbaru.
catatan
Opsi
-y
akan menginstal pembaruan tanpa meminta konfirmasi. Jika Anda ingin memeriksa pembaruan sebelum menginstal, Anda dapat menghapus opsi ini.[ec2-user ~]$
sudo dnf install openssl mod_ssl
-
Setelah Anda memasukkan perintah berikut, Anda akan dibawa ke prompt tempat Anda dapat memasukkan informasi tentang situs Anda.
[ec2-user ~]$
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache-selfsigned.key -out /etc/pki/tls/certs/apache-selfsigned.crt
Ini menghasilkan file
apache-selfsigned.crt
baru dalam direktori/etc/pki/tls/certs/
. Nama file yang ditentukan cocok dengan default yang ditetapkan dalam arahan SSLCertificateFile di/etc/httpd/conf.d/ssl.conf
.Instans Anda sekarang memiliki file berikut yang Anda gunakan untuk mengonfigurasi server aman dan membuat sertifikat untuk pengujian:
-
/etc/httpd/conf.d/ssl.conf
File konfigurasi untuk mod_ssl. Ini berisi arahan yang memberi tahu Apache di mana menemukan kunci enkripsi dan sertifikat, versi TLS protokol yang diizinkan, dan sandi enkripsi untuk diterima. Ini akan menjadi file sertifikat lokal Anda:
-
/etc/pki/tls/certs/apache-selfsigned.crt
File ini berisi sertifikat yang ditandatangani sendiri dan kunci privat sertifikat. Apache membutuhkan sertifikat dan kunci dalam PEM format, yang terdiri dari ASCII karakter yang dikodekan Base64 yang dibingkai oleh garis "" dan BEGIN END "”, seperti pada contoh singkat berikut.
-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD2KKx/8Zk94m1q 3gQMZF9ZN66Ls19+3tHAgQ5Fpo9KJDhzLjOOCI8u1PTcGmAah5kEitCEc0wzmNeo BCl0wYR6G0rGaKtK9Dn7CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vr GvwnKoMh3DlK44D9dX7IDua2PlYx5+eroA+1Lqf32ZSaAO0bBIMIYTHigwbHMZoT ... 56tE7THvH7vOEf4/iUOsIrEzaMaJ0mqkmY1A70qQGQKBgBF3H1qNRNHuyMcPODFs 27hDzPDinrquSEvoZIggkDMlh2irTiipJ/GhkvTpoQlv0fK/VXw8vSgeaBuhwJvS LXU9HvYq0U6O4FgD3nAyB9hI0BE13r1HjUvbjT7moH+RhnNz6eqqdscCS09VtRAo 4QQvAqOa8UheYeoXLdWcHaLP -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIEazCCA1OgAwIBAgICWxQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAi0t MRIwEAYDVQQIDAlTb21lU3RhdGUxETAPBgNVBAcMCFNvbWVDaXR5MRkwFwYDVQQK DBBTb21lT3JnYW5pemF0aW9uMR8wHQYDVQQLDBZTb21lT3JnYW5pemF0aW9uYWxV bml0MRkwFwYDVQQDDBBpcC0xNzItMzEtMjAtMjM2MSQwIgYJKoZIhvcNAQkBFhVy ... z5rRUE/XzxRLBZOoWZpNWTXJkQ3uFYH6s/sBwtHpKKZMzOvDedREjNKAvk4ws6F0 CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vrGvwnKoMh3DlK44D9dlU3 WanXWehT6FiSZvB4sTEXXJN2jdw8g+sHGnZ8zCOsclknYhHrCVD2vnBlZJKSZvak 3ZazhBxtQSukFMOnWPP2a0DMMFGYUHOd0BQE8sBJxg== -----END CERTIFICATE-----
Nama dan ekstensi file mudah dan tidak memengaruhi fungsi. Misalnya, Anda dapat meminta sertifikat
cert.crt
,cert.pem
, atau nama file lainnya, selama arahan terkait dalam filessl.conf
menggunakan nama yang sama.catatan
Saat Anda mengganti TLS file default dengan file khusus Anda sendiri, pastikan file tersebut dalam PEM format.
-
-
Mulai Ulang Apache.
[ec2-user ~]$
sudo systemctl restart httpd
catatan
Pastikan TCP port 443 dapat diakses pada EC2 instans Anda, seperti yang dijelaskan sebelumnya.
-
Server web Apache Anda sekarang harus mendukung HTTPS (amanHTTP) melalui port 443. Uji dengan memasukkan alamat IP atau nama domain yang sepenuhnya memenuhi syarat dari EC2 instans Anda ke URL bilah 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, itu berarti Anda telah berhasil mengkonfigurasi TLS di server Anda. Semua data yang masuk antara peramban dan server sekarang terenkripsi.
catatan
Untuk mencegah pengunjung situs menghadapi layar peringatan, Anda harus mendapatkan sertifikat tepercaya yang ditandatangani CA yang 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:
-
Buat permintaan penandatanganan sertifikat (CSR) dari kunci pribadi
-
Kirim CSR ke otoritas sertifikat (CA)
-
Dapatkan sertifikat host yang ditandatangani
-
Konfigurasikan Apache untuk menggunakan sertifikat
Sertifikat host TLS X.509 yang ditandatangani sendiri secara kriptologis identik dengan sertifikat yang ditandatangani CA. Perbedaannya bersifat sosial, bukan matematika. CA menjanjikan, setidaknya, untuk memvalidasi kepemilikan domain sebelum menerbitkan sertifikat kepada pemohon. Setiap browser web memuat daftar CAs tepercaya 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 webHTTPS, server menyajikan sertifikat untuk browser untuk memeriksa daftar tepercayaCAs. 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 cuma-cuma. Hal yang paling menonjol dari 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. Pada 2019, pemerintah
penting
Petunjuk untuk memperoleh sertifikat host yang ditandatangani CA ini tidak berfungsi kecuali Anda memiliki domain terdaftar dan dihosting. DNS
Untuk mendapatkan sertifikat yang ditandatangani CA
-
Connect ke instans Anda dan navigasikan to /etc/pki/tls/private /. Ini adalah direktori tempat Anda menyimpan kunci pribadi serverTLS. Jika Anda lebih suka menggunakan kunci host yang ada untuk menghasilkanCSR, lewati ke Langkah 3. Untuk informasi selengkapnya tentang menghubungkan ke instans Anda, lihat Menghubungkan ke AL2 instans 023
-
(Opsional) Buat kunci privat baru. Berikut ini adalah beberapa contoh konfigurasi kunci. Setiap kunci yang dihasilkan dapat berfungsi dengan server web Anda, tetapi memiliki tingkat dan tipe keamanan yang berbeda-beda dalam penerapannya.
-
Contoh 1: Buat kunci RSA host default. File yang dihasilkan,
custom.key
, adalah kunci pribadi 2048-bitRSA.[ec2-user ~]$
sudo openssl genrsa -out custom.key
-
Contoh 2: Buat RSA kunci yang lebih kuat dengan modulus yang lebih besar. File yang dihasilkan,
custom.key
, adalah kunci pribadi 4096-bitRSA.[ec2-user ~]$
sudo openssl genrsa -out custom.key 4096
-
Contoh 3: Buat kunci terenkripsi RSA 4096-bit dengan perlindungan kata sandi. File yang dihasilkan,
custom.key
, adalah kunci RSA pribadi 4096-bit yang dienkripsi dengan cipher -128. AESpenting
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 Anda 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 RSA non-cipher. RSAkriptografi bisa relatif lambat karena ukuran kunci publiknya, yang didasarkan pada produk dari dua bilangan prima besar. Namun, dimungkinkan untuk membuat kunci untuk TLS itu menggunakan RSA non-cipher. 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 -genkey
Hasilnya adalah kunci pribadi kurva elips 256-bit menggunakan prime256v1, “kurva bernama” yang didukung Open. SSL Kekuatan kriptografinya sedikit lebih besar dari RSA kunci 2048-bit, menurut. NIST
catatan
Tidak semua CAs memberikan tingkat dukungan yang sama untuk elliptic-curve-based kunci seperti untuk RSA kunci.
Pastikan bahwa kunci pribadi baru tersebut memiliki izin dan kepemilikan yang sangat ketat (pemilik=akar, grup=akar, baca/tulis untuk pemilik saja). Perintah akan seperti yang ditunjukkan dalam contoh berikut.
[ec2-user ~]$
sudo chown root:root custom.key
[ec2-user ~]$
sudo chmod 600 custom.key
[ec2-user ~]$
ls -al custom.key
Perintah sebelumnya akan memberikan hasil berikut.
-rw------- root root custom.key
Setelah Anda membuat dan mengonfigurasi kunci yang memuaskan, Anda dapat membuat CSR file.
-
-
Buat CSR menggunakan kunci pilihan Anda. Contoh berikut menggunakan
custom.key
.[ec2-user ~]$
sudo openssl req -new -key custom.key -out csr.pem
SSLBuka membuka dialog dan meminta Anda untuk 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 ISOSingkatan 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 berprefiks atau alias dalam bentuk
www.example.com
. Dalam pengujian dengan sertifikat yang ditandatangani sendiri dan tidak ada DNS resolusi, nama umum dapat terdiri dari nama host saja. CAsjuga menawarkan sertifikat yang lebih mahal yang menerima nama kartu liar seperti.*.example.com
www.example.com Alamat Email Alamat email administrator server. someone@example.com Terakhir, Open SSL meminta Anda untuk kata sandi tantangan opsional. Kata sandi ini hanya berlaku untuk CSR dan untuk transaksi antara Anda dan CA Anda, jadi ikuti rekomendasi CA tentang hal ini dan bidang opsional lainnya, nama perusahaan opsional. Kata sandi CSR tantangan tidak berpengaruh pada operasi server.
File yang dihasilkan
csr.pem
berisi kunci publik, tanda tangan digital kunci publik Anda, dan metadata yang Anda masukkan. -
Kirim CSR ke CA. Ini biasanya terdiri dari membuka CSR file Anda di editor teks dan menyalin konten ke dalam formulir web. Pada saat ini, Anda mungkin diminta untuk memberikan satu atau lebih nama alternatif subjek (SANs) untuk ditempatkan pada sertifikat. Jika
www.example.com
adalah nama umum, makaexample.com
akan menjadi baikSAN, dan sebaliknya. Pengunjung ke situs Anda yang memasukkan nama-nama ini akan melihat koneksi tanpa kesalahan. Jika formulir web CA Anda mengizinkannya, sertakan nama umum dalam daftarSANs. 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 Anda file dalam banyak format yang dimaksudkan untuk berbagai tujuan. Untuk tutorial ini, Anda hanya boleh menggunakan file sertifikat dalam PEM format, yang biasanya (tetapi tidak selalu) ditandai dengan ekstensi
.crt
file.pem
atau. 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 berakhir dengan baris berikut.
- - - -END CERTIFICATE - - - - -
Anda juga dapat menguji file pada baris perintah seperti yang ditunjukkan pada hal berikut.
[ec2-user certs]$
openssl x509 -in
certificate.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 sertifikat baru 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/certs
direktori, periksa apakah kepemilikan file, grup, dan pengaturan izin cocok dengan default AL2 023 yang sangat ketat (owner=root, group=root, read/write for owner only). Contoh berikut menunjukkan perintah yang dapat digunakan.[ec2-user certs]$
sudo chown root:root custom.crt
[ec2-user certs]$
sudo chmod 600 custom.crt
[ec2-user certs]$
ls -al custom.crt
Perintah ini akan memberikan hasil berikut.
-rw------- root root custom.crt
Izin untuk file sertifikat menengah tidak terlalu ketat (pemilik=root, grup=root, pemilik dapat menulis, grup dapat membaca, dunia dapat membaca). Contoh berikut menunjukkan perintah yang dapat digunakan.
[ec2-user certs]$
sudo chown root:root intermediate.crt
[ec2-user certs]$
sudo chmod 644 intermediate.crt
[ec2-user certs]$
ls -al intermediate.crt
Perintah ini akan memberikan hasil berikut.
-rw-r--r-- root root intermediate.crt
-
Tempatkan kunci pribadi yang Anda gunakan untuk membuat CSR di
/etc/pki/tls/private/
direktori.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/private
direktori, gunakan perintah berikut untuk memverifikasi bahwa kepemilikan file, grup, dan pengaturan izin cocok dengan default AL2 023 yang sangat ketat (owner=root, group=root, read/write for owner only).[ec2-user private]$
sudo chown root:root custom.key
[ec2-user private]$
sudo chmod 600 custom.key
[ec2-user private]$
ls -al custom.key
Perintah ini akan memberikan hasil berikut.
-rw------- root root custom.key
-
Edit
/etc/httpd/conf.d/ssl.conf
untuk mencerminkan sertifikat dan file kunci baru Anda.-
Berikan jalur dan nama file sertifikat host yang ditandatangani CA dalam arahan
SSLCertificateFile
Apache:SSLCertificateFile /etc/pki/tls/certs/custom.crt
-
Jika Anda menerima file sertifikat menengah (
intermediate.crt
dalam contoh ini), berikan jalur dan nama file menggunakan arahanSSLCACertificateFile
Apache:SSLCACertificateFile /etc/pki/tls/certs/intermediate.crt
catatan
Beberapa CAs menggabungkan sertifikat host dan sertifikat menengah dalam satu file, sehingga arahan
SSLCACertificateFile
menjadi tidak diperlukan. Baca petunjuk yang diberikan oleh CA Anda. -
Berikan jalur dan nama file kunci privat (
custom.key
dalam contoh ini) dalam arahanSSLCertificateKeyFile
Apache:SSLCertificateKeyFile /etc/pki/tls/private/custom.key
-
-
Simpan
/etc/httpd/conf.d/ssl.conf
dan mulai ulang Apache.[ec2-user ~]$
sudo systemctl restart httpd
-
Uji server Anda dengan memasukkan nama domain Anda ke URL bilah browser dengan awalan
https://
. Browser Anda harus memuat halaman pengujian HTTPS tanpa menghasilkan kesalahan.
Langkah 3: Menguji dan memperkuat konfigurasi keamanan
Setelah Anda TLS beroperasi dan terpapar ke publik, Anda harus menguji seberapa aman itu sebenarnya. Ini mudah dilakukan dengan menggunakan layanan online 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.
Di 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. Tabel berikut merangkum laporan untuk domain dengan pengaturan yang identik dengan konfigurasi Apache default pada AL2 023, dan dengan sertifikat Certbot default.
Penilaian secara keseluruhan | B |
Sertifikat | 100% |
Dukungan protokol | 95% |
Pertukaran kunci | 70% |
Kekuatan cipher | 90% |
Meskipun gambaran umum menunjukkan bahwa konfigurasi sebagian besar baik, laporan terperinci menunjukkan beberapa potensi masalah, yang tercantum dalam urutan keparahan:
✗ RC4Cipher didukung untuk digunakan oleh browser lama tertentu. Sebuah cipher adalah inti matematika dari algoritma enkripsi. RC4, cipher cepat yang digunakan untuk mengenkripsi TLS data-stream, diketahui memiliki beberapa kelemahan serius.
✗ TLSVersi lama didukung. Konfigurasi mendukung TLS 1.0 (sudah usang) dan TLS 1.1 (di jalur ke penghentian). Hanya TLS 1.2 yang direkomendasikan sejak 2018.
✗ Forward secrecy tidak sepenuhnya didukung. Forward secrecy
Untuk memperbaiki dan membuktikan konfigurasi di masa depan TLS
-
Buka file konfigurasi
/etc/httpd/conf.d/ssl.conf
dalam editor teks dan berikan komentar pada baris berikut dengan memasukkan “#” di awal baris.#SSLProtocol all -SSLv3
-
Tambahkan arahan berikut:
#SSLProtocol all -SSLv3 SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2
Arahan 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 kecuali 1.2. TLS Kata-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 memblokir sebagian kecil browser web yang sudah ketinggalan zaman mengakses situs Anda.
Untuk mengubah daftar cipher yang diperbolehkan
-
Di file konfigurasi
/etc/httpd/conf.d/ssl.conf
, temukan bagian dengan arahanSSLCipherSuite
dan berikan komentar pada baris yang sudah ada dengan memasukkan “#” di awal baris.#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
-
Tentukan suite cipher yang eksplisit dan urutan cipher yang memprioritaskan forward secrecy serta menghindari cipher yang tidak aman.
SSLCipherSuite
Arahan yang digunakan di sini didasarkan pada output dari Mozilla SSL Configuration Generator, yang menyesuaikan TLS konfigurasi dengan perangkat lunak tertentu yang berjalan di server Anda. Pertama tentukan SSL versi Apache dan Open Anda dengan menggunakan output dari perintah berikut. [ec2-user ~]$
yum list installed | grep httpd
[ec2-user ~]$
yum list installed | grep openssl
Misalnya, jika informasi yang dikembalikan adalah Apache 2.4.34 dan Open SSL 1.0.2, kami memasukkan ini ke generator. Jika Anda memilih model kompatibilitas "modern", ini menciptakan arahan
SSLCipherSuite
yang secara agresif menegakkan keamanan, tetapi tetap berfungsi di sebagian besar peramban. Jika perangkat lunak Anda tidak mendukung konfigurasi modern, Anda dapat memperbarui perangkat lunak atau memilih konfigurasi "menengah".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
Cipher yang dipilih memiliki ECDHEnama mereka, singkatan dari Elliptic Curve Diffie-Hellman Ephemeral. Istilah ephemeral menunjukkan forward secrecy. Sebagai produk sampingan, cipher ini tidak mendukung. RC4
Sebaiknya Anda menggunakan daftar cipher secara eksplisit alih-alih mengandalkan arahan yang ringkas atau default yang kontennya tidak dapat dilihat.
Salin arahan yang dihasilkan ke
/etc/httpd/conf.d/ssl.conf
.catatan
Meskipun ditampilkan di sini pada beberapa baris untuk keterbacaan, arahan harus pada satu baris saat disalin ke
/etc/httpd/conf.d/ssl.conf
, dengan hanya tanda titik dua (tanpa spasi) di antara nama-nama cipher. -
Terakhir, batalkan komentar pada baris berikut dengan menghapus “#” di awal baris.
#SSLHonorCipherOrder on
Arahan 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 ciphers yang diizinkan dengan keamanan lebih rendah.
Setelah menyelesaikan kedua prosedur ini, simpan perubahan ke /etc/httpd/conf.d/ssl.conf
dan mulai ulang Apache.
Jika Anda menguji domain lagi di Qualys SSL Labs
Penilaian secara keseluruhan | A |
Sertifikat | 100% |
Dukungan protokol | 100% |
Pertukaran kunci | 90% |
Kekuatan cipher | 90% |
Setiap pembaruan untuk Open SSL memperkenalkan cipher baru dan menghapus dukungan untuk yang lama. Simpan instans EC2 AL2 023 Anda up-to-date, perhatikan pengumuman keamanan dari Open SSL
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 RSA kunci terenkripsi pribadi yang disebut
custom.key
dalam 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 systemctl restart httpd
Apache sekarang akan dimulai tanpa meminta kata sandi Anda.
-
Saya mendapatkan kesalahan saat menjalankan sudo dnf install -y mod_ssl.
Saat Anda menginstal paket yang diperlukanSSL, Anda mungkin melihat kesalahan yang mirip dengan yang berikut ini.
Error: httpd24-tools conflicts with httpd-tools-2.2.34-1.16.amzn1.x86_64 Error: httpd24 conflicts with httpd-2.2.34-1.16.amzn1.x86_64
Ini biasanya berarti bahwa EC2 instance Anda tidak menjalankan AL2 023. Tutorial ini hanya mendukung instance yang baru dibuat dari AL2 023 AMI resmi.