Seri RHCE: Menerapkan HTTPS melalui TLS menggunakan Network Security Service (NSS) untuk Apache - Bagian 8


Jika Anda seorang administrator sistem yang bertugas memelihara dan mengamankan server web, Anda tidak boleh tidak mencurahkan upaya terbaik Anda untuk memastikan bahwa data yang disajikan oleh atau melalui server Anda terlindungi setiap saat.

Untuk menyediakan komunikasi yang lebih aman antara klien web dan server, protokol HTTPS lahir sebagai kombinasi HTTP dan SSL ( Secure Sockets Layer) atau yang lebih baru, TLS (Transport Layer Security).

Karena beberapa pelanggaran keamanan yang serius, SSL tidak lagi digunakan dan digantikan dengan TLS yang lebih kuat. Oleh karena itu, pada artikel kali ini kami akan menjelaskan cara mengamankan koneksi antara server web Anda dan klien menggunakan TLS.

Tutorial ini mengasumsikan bahwa Anda telah menginstal dan mengkonfigurasi server web Apache Anda. Jika belum, silakan lihat artikel berikut di situs ini sebelum melanjutkan lebih jauh.

  1. Instal LAMP (Linux, MySQL/MariaDB, Apache dan PHP) di RHEL/CentOS 7

Instalasi OpenSSL dan Utilitas

Pertama, pastikan Apache berjalan dan http dan https diizinkan melalui firewall:


systemctl start http
systemctl enable http
firewall-cmd --permanent –-add-service=http
firewall-cmd --permanent –-add-service=https

Kemudian instal paket-paket yang diperlukan:


yum update && yum install openssl mod_nss crypto-utils

Penting: Harap dicatat bahwa Anda dapat mengganti mod_nss dengan mod_ssl pada perintah di atas jika Anda ingin menggunakan OpenSSL alih-alih NSS (Layanan Keamanan Jaringan) untuk mengimplementasikan TLS (yang mana yang akan digunakan sepenuhnya terserah Anda , namun kami akan menggunakan NSS dalam artikel ini karena lebih tangguh; misalnya, NSS mendukung standar kriptografi terkini seperti PKCS #11).

Terakhir, hapus instalan mod_ssl jika Anda memilih untuk menggunakan mod_nss, atau sebaliknya.


yum remove mod_ssl

Mengonfigurasi NSS (Layanan Keamanan Jaringan)

Setelah mod_nss diinstal, file konfigurasi defaultnya dibuat sebagai /etc/httpd/conf.d/nss.conf. Anda kemudian harus memastikan bahwa semua direktif Listen dan VirtualHost mengarah ke port 443 (port default untuk HTTPS):


Listen 443
VirtualHost _default_:443

Kemudian restart Apache dan periksa apakah modul mod_nss telah dimuat:


apachectl restart
httpd -M | grep nss

Selanjutnya, pengeditan berikut harus dilakukan pada file konfigurasi /etc/httpd/conf.d/nss.conf:

1. Tunjukkan direktori database NSS. Anda dapat menggunakan direktori default atau membuat yang baru. Dalam tutorial ini kita akan menggunakan default:


NSSCertificateDatabase /etc/httpd/alias

2. Hindari entri frasa sandi manual pada setiap permulaan sistem dengan menyimpan kata sandi ke direktori database di /etc/httpd/nss-db-password.conf:


NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

Dimana /etc/httpd/nss-db-password.conf HANYA berisi baris berikut dan mypassword adalah kata sandi yang akan Anda atur nanti untuk database NSS:


internal:mypassword

Selain itu, izin dan kepemilikannya harus ditetapkan masing-masing ke 0640 dan root:apache:


chmod 640 /etc/httpd/nss-db-password.conf
chgrp apache /etc/httpd/nss-db-password.conf

3. Red Hat menyarankan untuk menonaktifkan SSL dan semua versi TLS sebelum TLSv1.0 karena POODLE SSLv3 (informasi lebih lanjut di sini).

Pastikan bahwa setiap contoh direktif NSSProtocol terbaca sebagai berikut (Anda mungkin hanya menemukan satu jika Anda tidak menghosting host virtual lainnya):


NSSProtocol TLSv1.0,TLSv1.1

4. Apache akan menolak memulai ulang karena ini adalah sertifikat yang ditandatangani sendiri dan tidak akan mengakui penerbitnya sebagai valid. Oleh karena itu, dalam kasus khusus ini Anda harus menambahkan:


NSSEnforceValidCerts off

5. Meskipun tidak sepenuhnya diwajibkan, penting untuk menetapkan kata sandi untuk database NSS:


certutil -W -d /etc/httpd/alias