GNU/Linux >> Belajar Linux >  >> Linux

Cara mengaktifkan kerahasiaan maju sempurna SSL/TLS di Apache atau Nginx

Artikel ini memberikan ikhtisar tentang perfect forward secrecy (PFS) dan cara mengaktifkannya di server web Apache® atau Nginx®.

Apa itu PFS?

PFS melindungi data yang dibagikan antara klien dan server bahkan jika kunci pribadi disusupi. Anda dapat melakukannya dengan membuat kunci sesi untuk setiap transaksi yang dilakukan.

Mengapa menerapkan PFS di situs web?

Sertifikat TLS atau SSL bekerja dengan menggunakan kunci publik dan kunci pribadi. Ketika browser web dan server bertukar kunci, sistem membuat kunci sesi dengan menggunakan mekanisme pertukaran kunci yang disebut RSA, di mana semua informasi antara klien dan server dienkripsi. RSAmembuat tautan antara kunci pribadi server dan kunci sesi yang dibuat untuk setiap sesi unik yang aman.

Sesi mungkin akan diserang secara paksa—ini terdiri dari serangan yang menginjeksi server dengan kombinasi kunci keamanan hingga menemukan yang benar. Meskipun proses ini mungkin memakan waktu lama, jika kunci pribadi server disusupi, penyerang dapat melihat data sesi dan semua transaksi klien.

Bagaimana PFS melindungi situs web

PFS memungkinkan server untuk tidak bergantung pada satu kunci sesi. Alih-alih menggunakan kunci enkripsi yang sama setiap kali pengguna atau layanan membuat koneksi, PFS membuat kunci sesi unik untuk setiap koneksi.

Aktifkan PFS dengan menggunakan mekanisme pertukaran—Ephemeral Diffie-Hellman (DHE) danElliptic Curve Diffie-Hellman (ECDHE) . Jika penyerang memaksa kunci sesi, mereka hanya dapat mendekripsi informasi dari satu sesi itu dan bukan yang lain.

Persyaratan untuk menerapkan PFS di server web

Gunakan salah satu alat berikut untuk mengimplementasikan PFS:

  • OpenSSL 1.0.1c+
  • Apache 2.4 atau
  • Nginx 1.0.6+ dan 1.1.0+

Anda dapat memeriksa versi paket-paket ini dengan menjalankan perintah berikut:

Catatan :Hasil mungkin berbeda karena vendor merilis versi baru.

[root@rackspace-test ~]$ openssl version
OpenSSL 1.1.1g FIPS  21 Apr 2020

[root@rackspace-test ~]$ httpd -v
Server version: Apache/2.4.37 (centos)
Server built:   Nov  4 2020 03:20:37

Untuk server sistem operasi Debian® atau Ubuntu®, perintahnya adalah apache2ctl -v .

[root@rackspace-test ~]$ nginx -v
nginx version: nginx/1.14.1

Konfigurasi protokol SSL

Periksa situs web apa yang telah menerapkan SSL dengan menjalankan perintah di bagian berikut.

Contoh ini menerapkan PFS dalam domain yang disebut example.com .

Petunjuk Apache

Ada dua opsi untuk memeriksa situs web yang memiliki sertifikat SSL:

[root@rackspace-test ~]# grep -ir "SSLEngine" /etc/httpd/
/etc/httpd/conf.d/example.com.conf:     SSLEngine on

Catatan: Jalur default untuk Apache Virtual Host berada di bawah direktori /etc/httpd/conf.d/ . Direktori mungkin berbeda untuk konfigurasi Anda.

Atau, Anda dapat menggunakan perintah httpd -S atau apachectl -S untuk CentOS ® atau RedHat® Enterprise Linux ® (RHEL) dan apache2ctl -S untuk sistem operasi Debian atau Ubuntu.

[root@rackspace-test ~]# httpd -S | grep 443
*:443                  is a NameVirtualHost
     port 443 namevhost www.example.com (/etc/httpd/conf.d/example.com.conf:10)

Tambahkan parameter berikut ke konfigurasi vhost dengan editor teks favorit Anda:

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"

Saat Anda menelusuri kata SSL di vhost, output akan terlihat seperti berikut setelah implementasi:

[root@rackspace-test ~]# egrep 'SSL' /etc/httpd/conf.d/example.com.conf
     SSLEngine on
     SSLProtocol all -SSLv2 -SSLv3
     SSLHonorCipherOrder on
     SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
     SSLCertificateFile       /etc/ssl/certs/2022-example.com.crt
     SSLCertificateKeyFile    /etc/ssl/private/2022-example.com.key

Pastikan sintaksnya benar dan restart Apache.

[root@rackspace-test ~]# httpd -t
Syntax OK
[root@rackspace-test ~]# apachectl -k restart
Petunjuk Nginx

Daftar situs web yang memiliki sertifikat SSL terpasang:

[root@rackspace-test ~]# egrep -ir 'SSL' /etc/nginx/conf.d/
/etc/nginx/conf.d/example.com.conf:        listen 443 ssl;
/etc/nginx/conf.d/example.com.conf:        ssl_certificate       /etc/ssl/certs/2022-example.com.chained.crt;
/etc/nginx/conf.d/example.com.conf:        ssl_certificate_key   /etc/ssl/private/2022-example.com.key;

Catatan: Jalur default untuk Blok Nginx berada di bawah direktori/etc/nginx/conf.d/ . Direktori mungkin berbeda untuk konfigurasi Anda.

Tambahkan parameter berikut ke konfigurasi vhost dengan editor teks favorit Anda:

ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

Saat Anda menelusuri kata SSL di vhost, output akan terlihat seperti berikut setelah implementasi:

[root@racksapce-test ~]# egrep -ir 'SSL' /etc/nginx/conf.d/example.com.conf
     listen          443 ssl;
     ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
     ssl_prefer_server_ciphers on;
     ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
     ssl_certificate         /etc/ssl/certs/2022-example.com.chained.crt;
     ssl_certificate_key     /etc/ssl/private/2022-example.com.key;

Pastikan sintaksnya benar dan mulai ulang Nginx.

[root@rackspace-test ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@rackspace-test ~]# nginx -s reload

Dengan menggunakan langkah-langkah sebelumnya, Anda dapat menerapkan PFS dengan benar untuk situs web Anda.

Gunakan tab Umpan Balik untuk memberikan komentar atau mengajukan pertanyaan. Anda juga dapat memulai percakapan dengan kami.


Linux
  1. Apa itu NGINX? Bagaimana cara kerjanya?

  2. CentOS / RHEL :Cara Mengaktifkan SSL Untuk Apache

  3. Izin untuk kunci SSL?

  1. Cara Mengaktifkan HTTP2 di NGINX

  2. Cara Mengaktifkan Kebijakan HSTS (HTTP Strict Transport Security) di Nginx &Apache

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

  1. Cara mengatur SSL/TLS dengan Apache httpd di Red Hat

  2. Cara Mengaktifkan HTTP/2 di Nginx

  3. Cara Mengaktifkan TLS 1.3 di Nginx