Tutorial: Konfigurasikan SSL/TLS di Amazon Linux AMI - Amazon Linux 1

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 sebagai gantinya.

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 menganggap TLS 1.0 tidak aman. TLS 1.0 dan TLS 1.1 secara resmi usang pada Maret 2021. Tutorial ini berisi panduan yang secara eksklusif didasarkan pada pengaktifan TLS 1.2. TLS 1.3 diselesaikan pada tahun 2018 dan tersedia AL2 selama perpustakaan TLS yang mendasarinya (OpenSSL dalam tutorial ini) didukung dan diaktifkan. Klien harus mendukung TLS 1.2 atau versi yang lebih baru pada 28 Juni 2023. Untuk informasi selengkapnya tentang standar enkripsi yang diperbarui, lihat RFC 7568 dan RFC 8446.

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. Untuk Red Hat Enterprise Linux, lihat yang berikut ini: Menyiapkan Server Web Apache HTTP. Untuk distribusi lain, lihat dokumentasi spesifik mereka.

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.

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
  1. Sambungkan ke instans Anda dan konfirmasi bahwa Apache sedang berjalan.

    [ec2-user ~]$ sudo service httpd status

    Jika perlu, mulai Apache.

    [ec2-user ~]$ sudo service httpd start
  2. 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 -y menginstal pembaruan tanpa meminta konfirmasi. Jika Anda ingin memeriksa pembaruan sebelum menginstal, Anda dapat menghapus opsi ini.

    [ec2-user ~]$ sudo yum update -y
  3. Setelah instans Anda diperbarui, tambahkan dukungan TLS dengan menginstal modul Apache mod_ssl.

    [ec2-user ~]$ sudo yum install -y mod_ssl

    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. 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.key

    Kunci 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.crt

    Sertifikat 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 .key maupun .crt berformat 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 file ssl.conf menggunakan nama yang sama.

    catatan

    Ketika Anda mengganti file TLS default dengan file kustom milik Anda sendiri, pastikan file tersebut dalam format PEM.

  4. Mulai Ulang Apache.

    [ec2-user ~]$ sudo service httpd restart
  5. 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 awalanhttps://. 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, yang juga mendukung otomatisasi proses pembuatan dan pembaruan sertifikat. Untuk informasi selengkapnya tentang penggunaan sertifikat Let's Encrypt, lihat Mendapatkan Certbot.

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 dan industri merekomendasikan penggunaan ukuran kunci minimum (modulus) sebesar 2048 bit bagi kunci RSA yang ditujukan untuk melindungi dokumen hingga tahun 2030. Ukuran modulus default yang dihasilkan oleh OpenSSL di Amazon Linux adalah 2048 bit, yang berarti bahwa kunci yang dihasilkan secara otomatis dapat digunakan dalam sertifikat yang ditandatangani CA. Sebuah prosedur alternatif akan dijelaskan di bawah ini untuk mereka yang menginginkan kunci yang disesuaikan, misalnya, kunci dengan modulus yang lebih besar atau menggunakan algoritma enkripsi yang berbeda.

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
  1. 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.

  2. (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 -genkey

      Hasilnya 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.key

    Perintah di atas akan memberikan hasil seperti berikut:

    -rw------- root root custom.key

    Setelah membuat dan mengonfigurasikan kunci yang memuaskan, Anda dapat membuat CSR.

  3. 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.pem

    OpenSSL 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.com

    www.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.pem berisi kunci publik, tanda tangan digital kunci publik Anda, dan metadata yang Anda masukkan.

  4. 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.com merupakan nama umum, example.com akan 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 .pem atau .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 -in certificate.crt -text

    Pastikan baris ini muncul di file. Jangan gunakan file yang diakhiri dengan .p7b, .p7c, atau ekstensi file serupa.

  5. 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/certs direktori, 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.crt

    Perintah di atas seharusnya 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). 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.crt

    Perintah di atas akan memberikan hasil seperti berikut:

    -rw-r--r-- root root intermediate.crt
  6. 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/private direktori, 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.key

    Perintah di atas akan memberikan hasil seperti berikut:

    -rw------- root root custom.key
  7. Edit /etc/httpd/conf.d/ssl.conf untuk merefleksikan sertifikat dan file kunci baru Anda.

    1. Berikan jalur dan nama file sertifikat host yang ditandatangani CA dalam arahan SSLCertificateFile Apache:

      SSLCertificateFile /etc/pki/tls/certs/custom.crt
    2. Jika Anda menerima file sertifikat menengah (intermediate.crt dalam contoh ini), berikan jalur dan nama file menggunakan arahan SSLCACertificateFileApache:

      SSLCACertificateFile /etc/pki/tls/certs/intermediate.crt
      catatan

      Beberapa CAs menggabungkan sertifikat host dan sertifikat perantara dalam satu file, membuat arahan ini tidak perlu. Baca petunjuk yang diberikan oleh CA Anda.

    3. Berikan jalur dan nama file kunci privat dalam arahan SSLCertificateKeyFile Apache:

      SSLCertificateKeyFile /etc/pki/tls/private/custom.key
  8. Simpan /etc/httpd/conf.d/ssl.conf dan mulai ulang Apache.

    [ec2-user ~]$ sudo service httpd restart
  9. 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, yang melakukan analisis yang bebas dan menyeluruh atas pengaturan keamanan Anda. Berdasarkan hasilnya, Anda dapat memutuskan untuk memperkuat konfigurasi keamanan default dengan mengendalikan protokol mana yang diterima, cipher mana yang lebih disukai, dan hal mana yang tidak Anda sertakan. Untuk informasi selengkapnya, lihat cara Qualys merumuskan nilainya.

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 Labs, masukkan nama domain server Anda yang sepenuhnya memenuhi syarat, dalam bentuk www.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. Kecuali jika Anda memiliki alasan yang sangat bagus untuk mendukung peramban terdahulu, Anda harus menonaktifkan cipher ini.

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
  1. Buka file konfigurasi /etc/httpd/conf.d/ssl.conf dalam editor teks dan berikan komentar pada baris berikut dengan memasukkan “#” di awal setiap baris:

    #SSLProtocol all -SSLv3 #SSLProxyProtocol all -SSLv3
  2. Tambahkan arahan berikut:

    SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 SSLProxyProtocol -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 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
  1. Buka file konfigurasi /etc/httpd/conf.d/ssl.conf dan temukan bagian dengan contoh yang dikomentari untuk mengonfigurasi SSLCipherSuite dan SSLProxyCipherSuite.

    #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 #SSLProxyCipherSuite HIGH:MEDIUM:!aNULL:!MD5

    Tinggalkan 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-SHA

    Cipher 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.

  2. Hapus komentar baris berikut dengan menghapus “#”:

    #SSLHonorCipherOrder on

    Perintah 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.

  3. 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.key di 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 restart

    Apache sekarang akan mulai tanpa meminta kata sandi Anda.