GNU/Linux >> Belajar Linux >  >> Linux

Cara mengamankan koneksi SSL dengan Apache di Ubuntu 18.04

Mengonfigurasi koneksi SSL (Secure Sockets Layer), memungkinkan Anda menambahkan protokol enkripsi asimetris tambahan ke HTTP umum. Protokol SSL dapat berguna untuk memperkuat sistem otentikasi situs web atau pertukaran data antara aplikasi dan server. Dalam panduan ini Anda akan melihat cara mengonfigurasi koneksi SSL dan mengaktifkan HTTPS di Apache dengan Ubuntu 18.04.

Pertama, sambungkan ke server Anda melalui koneksi SSH. Jika Anda belum melakukannya, ikuti panduan kami disarankan untuk terhubung dengan aman dengan protokol SSH. Untuk server lokal, lanjutkan ke langkah berikutnya dan buka terminal server Anda.

Mendapatkan Sertifikat SSL

Untuk membuat sambungan yang aman, Apache memerlukan sertifikat SSL yang dapat diperoleh dari Otoritas Sertifikasi (CA). Untuk kenyamanan, dalam contoh ini kita akan menggunakan sertifikat yang ditandatangani sendiri atau ditandatangani sendiri, hanya digunakan di lingkungan pengujian dan pengembangan. Untuk mendapatkan sertifikat yang ditandatangani sendiri, lihat panduan kami untuk Membuat Sertifikat SSL yang Ditandatangani Sendiri.

Jika Anda tertarik untuk mendapatkan sertifikat SSL gratis yang dikeluarkan oleh Otoritas Sertifikasi, ikuti panduan kami tentang Cara mengamankan Apache dengan Let's Encrypt dan Ubuntu 18.04 .

Catatan penting:

Selama pembuatan sertifikat, masukkan alamat IP server Anda dan atau nama domain saat diminta Nama Umum:

Common Name (e.g. server FQDN or YOUR name) []: domain.com

Setelah mendapatkan sertifikat, buat folder /etc/certificate:

$ sudo mkdir /etc/certificate

Kemudian simpan sertifikat dan kunci pribadi di dalamnya.

Mengonfigurasi parameter SSL Apache

Lanjutkan dengan menyetel arahan untuk koneksi aman yang akan dibuat Apache. Untuk melakukannya, buat file ssl-params.conf di direktori Apache conf-available:

$ sudo nano /etc/apache2/conf-available/ssl-params.conf

Tempelkan konfigurasi dasar berikut ke dalam file yang baru dibuat:

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
    
    SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    
    SSLHonorCipherOrder On
    
    
    Header always set X-Frame-Options DENY
    
    Header always set X-Content-Type-Options nosniff
    
    # Requires Apache >= 2.4
    
    SSLCompression off
    
    SSLUseStapling on
    
    SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
    
    
    # Requires Apache >= 2.4.11
    
    SSLSessionTickets Off

Kemudian simpan dan tutup file.

Cara mengubah Host Virtual

Kemudian, ubah konfigurasi SSL Host Virtual domain yang ingin Anda lindungi dengan koneksi SSL. Dalam tutorial ini konfigurasi SSL dari Apache Virtual Host default akan digunakan, sebagai contoh.

Buka konfigurasi SSL Host Virtual:

$ sudo nano /etc/apache2/sites-available/default-ssl.conf

Anda akan menemukan file terstruktur sebagai berikut :

<IfModule mod_ssl.c>
    
            <VirtualHost _default_:443>
    
                    ServerAdmin [email protected]
                     
    
                    DocumentRoot /var/www/html
                     
    
                    ErrorLog ${APACHE_LOG_DIR}/error.log
    
                    CustomLog ${APACHE_LOG_DIR}/access.log combined
                     
    
                    SSLEngine on
                     
    
                    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
    
                    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
                     
    
                    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    
                                    SSLOptions +StdEnvVars
    
                    </FilesMatch>
    
                    <Directory /usr/lib/cgi-bin>
    
                                    SSLOptions +StdEnvVars
    
                    </Directory>
                     
    
            </VirtualHost>
    
    </IfModule>

Siapkan direktif ServerAdmin dengan benar dengan memasukkan email Anda dan tambahkan direktif ServerName diikuti dengan domain atau alamat IP server Anda.

Terakhir, ubah jalur yang ditunjukkan oleh arahan SSLCertificateFile dan SSLCertificateKeyFile, masing-masing memasukkan jalur sertifikat dan kunci pribadi Anda .

Anda akan mendapatkan hasil seperti berikut :

<IfModule mod_ssl.c>
    
            <VirtualHost _default_:443>
    
                    ServerAdmin [email protected]
    
                    ServerName mydomain.com
                     
    
                    DocumentRoot /var/www/html
                     
    
                    ErrorLog ${APACHE_LOG_DIR}/error.log
    
                    CustomLog ${APACHE_LOG_DIR}/access.log combined
                     
    
                    SSLEngine on
                     
    
                    SSLCertificateFile      /etc/certificate/certificate.crt
    
                    SSLCertificateKeyFile /etc/certificate/private.key
                     
    
                    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    
                                    SSLOptions +StdEnvVars
    
                    </FilesMatch>
    
                    <Directory /usr/lib/cgi-bin>
    
                                    SSLOptions +StdEnvVars
    
                    </Directory>
                     
    
            </VirtualHost>
    
    </IfModule>

Kemudian simpan dan tutup file.

Cara mengkonfigurasi Firewall

Jika ada firewall di sistem Anda, siapkan untuk mengaktifkan lalu lintas HTTP dan lalu lintas HTTPS ke komputer Anda.

Saat menggunakan firewall UFW, tersedia beberapa profil yang telah diinstal sebelumnya untuk Apache. Jadi mari kita lihat cara mengaktifkannya.

Untuk memeriksa profil yang tersedia yang terpasang di firewall UFW, jalankan perintah ini:

$ sudo ufw app list

Daftar yang mirip dengan berikut ini akan ditampilkan di layar:

Available applications:
    
      Apache
    
      Apache Full
    
      Apache Secure
    
      OpenSSH

Untuk mengizinkan lalu lintas HTTP (Port 80) dan HTTPS (Port 443), gunakan profil "Apache Full".

Periksa informasi profil sebagai berikut:

$ sudo ufw app info "Apache Full"

Deskripsi profil layar akan ditampilkan :

Profile: Apache Full
    
    Title: Web Server (HTTP,HTTPS)
    Description: Apache v2 is the next generation of the omnipresent Apache web
    server.
    
    Ports:
    80,443/tcp

Setelah memverifikasi profil, aktifkan:

$ sudo ufw allow in "Apache Full"

Cara mengkonfigurasi Apache

Pada titik ini perubahan konfigurasi Apache dapat dilakukan.

Aktifkan modul mod_ssl dan mod_headers:

$ sudo a2enmod ssl
    
    $ sudo a2enmod headers

Aktifkan pembacaan konfigurasi SSL yang dibuat sebelumnya:

$ sudo a2enconf ssl-params

Aktifkan Host Virtual SSL default:

$ sudo a2ensite default-ssl

Periksa apakah Anda tidak membuat kesalahan sintaks dalam file konfigurasi Apache:

$ sudo apache2ctl configtest

Jika pesan "Syntax OK" muncul di layar, lanjutkan dengan memulai ulang Apache:

$ sudo systemctl restart apache2

Cara memeriksa koneksi aman

Buka browser Anda dengan menghubungkan ke domain atau alamat IP Virtual Host yang Anda konfigurasikan, pastikan untuk menggunakan protokol https

https://mydomain.com

Linux
  1. Cara Mengamankan Nginx dengan Letsencrypt di Ubuntu 20.04

  2. Cara Mengamankan vsFTPd Dengan SSL/TLS

  3. Cara mengamankan Apache dengan Lets Encrypt di Ubuntu 18.04

  1. Cara Mengaktifkan Protokol HTTPS dengan Apache 2 di Ubuntu 20.04

  2. Bagaimana cara menginstal Apache di Ubuntu?

  3. Cara Menginstal PHP-FPM dengan Apache di Ubuntu 22.04

  1. Cara Menginstal dan Mengamankan phpMyAdmin dengan Apache di Ubuntu 18.04

  2. Amankan Apache dengan Lets Encrypt di Ubuntu 20.04

  3. Cara Menginstal Elasticsearch di Ubuntu 22.04 dengan SSL