Konfigurasi Apache dengan Sertifikat SSL/TLS di CentOS 8

Ikuti panduan ini untuk mempelajari cara mengonfigurasi Apache dengan Sertifikat SSL/TLS di CentOS 8.

Apakah Anda menggunakan Nginx sebagai gantinya? Lihat panduan kami tentang pengaturan Nginx dengan sertifikat SSL/TLS dengan mengikuti tautan di bawah ini;

Konfigurasikan Nginx dengan sertifikat SSL/TLS di CentOS 8

Konfigurasi Apache dengan Sertifikat SSL/TLS di CentOS 8

Jalankan Pembaruan Sistem

Perbarui paket sistem Anda dengan menjalankan;

dnf update

Instal modul Apache dan SSL/TLS di CentOS 8

Server HTTP Apache disediakan oleh httpd paket sementara mod_ssl paket menyediakan modul Apache SSL/TLS. Kedua paket dapat diinstal dengan menjalankan;

dnf install httpd mod_ssl

Menjalankan Apache

Mulai dan aktifkan Apache untuk berjalan pada boot sistem.

systemctl enable --now httpd

Izinkan HTTPS di Firewall

Untuk mengizinkan akses eksternal ke Apache melalui HTTPS, buka 443 (HTTPS) tergantung pada lalu lintas ke server.

Dalam panduan ini, karena kami mengonfigurasi Nginx ke sertifikat TLS, kami membuka port 443/tcp.

firewall-cmd --add-port=443/tcp --permanent

Jika Anda ingin mengarahkan lalu lintas HTTP ke HTTPS, buka port 80 juga.

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload

Hasilkan Sertifikat SSL/TLS

Ada beberapa opsi untuk dipilih saat Anda ingin mengamankan Apache dengan sertifikat SSL/TLS.

  • Anda dapat menggunakan sertifikat yang ditandatangani sendiri untuk tujuan pengujian.
  • Anda dapat memesan sertifikat server tepercaya secara komersial dari CA pilihan Anda
  • Anda dapat menggunakan free, automated, dan open CA, Mari Enkripsi.

Nah, dalam panduan ini, kami menggunakan opsi pertama dari sertifikat SSL/TLS yang ditandatangani sendiri untuk tujuan demonstrasi.

Jadi bagaimana Anda menghasilkan sertifikat SSL/TLS yang ditandatangani sendiri di CentOS 8? Perintah Openssl digunakan untuk menghasilkan sertifikat SSL/TLS seperti yang ditunjukkan di bawah ini;

openssl req -newkey rsa:4096 -nodes -keyout /etc/pki/tls/private/kifarunix-demo.key -x509 -days 365 -out /etc/pki/tls/certs/kifarunix-demo.crt

Jadi apa saja opsi command line openssl yang digunakan di atas?

  • req: Digunakan untuk membuat CSR serta sertifikat yang ditandatangani sendiri.
  • -newkey rsa:4096: Opsi ini membuat permintaan sertifikat baru dan kunci RSA 4096 bit secara bersamaan.
  • -nodes: Ketika opsi ini ditentukan, maka jika kunci pribadi dibuat, itu tidak akan dienkripsi.
  • -keyout /etc/pki/tls/private/kifarunix-demo.key: Menulis kunci pribadi yang baru dibuat ke nama file yang ditentukan. Ganti nama file yang sesuai.
  • -x509: Opsi ini mengeluarkan sertifikat yang ditandatangani sendiri alih-alih permintaan sertifikat.
  • -days 365: Digunakan untuk menentukan masa berlaku sertifikat yang ditandatangani sendiri yang dihasilkan. Oleh karena itu, ini berlaku selama 365 hari.
  • -out /etc/pki/tls/certs/kifarunix-demo.crt: Menentukan nama file keluaran untuk menulis sertifikat yang ditandatangani sendiri.

Saat perintah dijalankan, Anda akan diminta untuk memberikan detail identifikasi sertifikat seperti: Country Name organisasi Anda, State, itu Locality, nama Organization, itu Organization Unit, itu Common Name (Ini adalah detail yang paling penting), email opsional.

Anda juga dapat memberikan detail ini pada command line menggunakan -subj pilihan dari openssl-req perintah seperti gambar di bawah ini;

-subj "/C=CN/ST=STATE/L=CITY/O=ORG NAME/OU=Department/CN=DOMAIN_NAME/emailAddress=[email protected]"

Misalnya untuk menghasilkan sertifikat SSL/TLS yang ditandatangani sendiri untuk domain, kifarunix-demo.com dan semua sub-domainnya (Nama umum akan ditulis sebagai *.kifarunix-demo.com), Anda dapat membuka perintah openssl-req sebagai;

(Ganti nama domain yang sesuai)

openssl req -newkey rsa:4096 -nodes -keyout /etc/pki/tls/private/kifarunix-demo.key -x509 -days 365 -out /etc/pki/tls/certs/kifarunix-demo.crt  -subj "/C=US/ST=Oregon/L=Springfield/O=kifarunix-demo/OU=IT/CN=*.kifarunix-demo.com/[email protected]"

Nah, itu dia. Kunci pribadi Anda telah ditulis ke/etc/pki/tls/private/kifarunix-demo.key sementara sertifikat Anda telah ditulis ke /etc/pki/tls/certs/kifarunix-demo.crt.

Nah, ingin menggunakan sertifikat yang ditandatangani secara komersial? Hasilkan CSR dan kirimkan ke CA favorit Anda untuk memesan sertifikat tepercaya.

Perintah di bawah ini dapat memberi Anda CSR. Lakukan substitusi yang tepat.

openssl req -new -newkey rsa:4096 -nodes -keyout domain.key -out domain.csr  -subj "/C=CN/ST=STATE/L=CITY/O=ORG NAME/OU=Department/CN=DOMAIN_NAME/emailAddress=[email protected]"

Pastikan untuk menyimpan kunci dengan aman seperti yang Anda perlukan saat memasang sertifikat.

Konfigurasi Apache untuk Menggunakan Sertifikat SSL/TLS

Sekarang setelah Anda memiliki kunci pribadi dan sertifikat SSL/TLS Anda (dalam kasus ini ditandatangani sendiri), lanjutkan untuk mengonfigurasi Apache untuk menggunakannya.

Buka file konfigurasi Apache SSL untuk mengedit.

vim /etc/httpd/conf.d/ssl.conf

Selain menginstal sertifikat SSL/TLS, ada beberapa cipher yang disediakan oleh Cipherli.st yang bertujuan untuk memberikan Keamanan SSL yang Kuat untuk semua browser modern. Kami juga akan menambahkan cipher ini ke konfigurasi Apache SSL.

Dalam panduan ini, kami membuat perubahan pada konfigurasi host virtual SSL default.

## Redirect HTTP Traffic to HTTPS <VirtualHost *:80> DocumentRoot /var/www/html ServerName centos8.kifarunix-demo.com RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </VirtualHost> ## Begin SSL configuration Listen 443 https SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog SSLSessionCache shmcb:/run/httpd/sslcache(512000) SSLSessionCacheTimeout 300 SSLCryptoDevice builtin <VirtualHost _default_:443> ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn SSLEngine on SSLProtocol -all +TLSv1.3 +TLSv1.2 SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1 SSLHonorCipherOrder on SSLCipherSuite EECDH+AESGCM:EDH+AESGCM SSLCertificateFile /etc/pki/tls/certs/kifarunix-demo.crt SSLCertificateKeyFile /etc/pki/tls/private/kifarunix-demo.key <FilesMatch ".(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]"  nokeepalive ssl-unclean-shutdown  downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log  "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b" Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff SSLCompression off #SSLUseStapling on #SSLStaplingCache "shmcb:logs/stapling-cache(150000)" SSLSessionTickets Off </VirtualHost>

Stapel Protokol Status Sertifikat Online ( OCSP ) dinonaktifkan karena kami menggunakan sertifikat yang ditandatangani sendiri.

Simpan file konfigurasi dan periksa sintaks konfigurasi apa pun.

apachectl configtest

atau

httpd -t
Syntax OK

Buat contoh halaman pengujian Apache pada direktori root default;

vim /var/www/html/index.html
<!DOCTYPE html> <html> <body> <h1>centos8.kifarunix-demo.com</h1> <p>Configuring Apache to use SSL/TLS certificates on CentOS 8</p> </body> </html>

Menjalankan Apache dengan SSL/TLS diaktifkan

Anda sekarang dapat me-restart Apache untuk melakukan perubahan.

systemctl restart httpd

Menguji konfigurasi Apache SSL/TLS

Sekarang saatnya untuk menguji apakah Apache dapat melayani permintaan HTTPS serta mengarahkan lalu lintas HTTP ke lalu lintas HTTPS. Akses menggunakan alamat IP server dari nama host,https://server-IP-or-Hostname.

Bahkan jika Anda mencoba dengan http://server-IP-or-Hostname, itu akan diarahkan ke HTTPS.

Dan itu menandai POC kami. Anda telah mempelajari cara mengkonfigurasi Apache dengan Sertifikat SSL/TLS di CentOS 8.

Tutorial Terkait

Instal Redmine dengan Apache dan MariaDB di CentOS 8

Instal Apache dengan Sertifikat yang ditandatangani sendiri di FreeBSD 12

Instal phpMyAdmin dengan Apache di Fedora 30

Hapus Halaman Uji Apache di Fedora 30/29