RHCE Serisi: Apache için Ağ Güvenlik Hizmeti'ni (NSS) kullanarak TLS aracılığıyla HTTPS'yi uygulama - Bölüm 8


Bir web sunucusunun bakımından ve güvenliğinden sorumlu bir sistem yöneticisiyseniz, sunucunuz tarafından sunulan veya sunucunuzdan geçen verilerin her zaman korunmasını sağlamak için elinizden gelenin en iyisini yapmamayı göze alamazsınız.

Web istemcileri ve sunucuları arasında daha güvenli iletişim sağlamak amacıyla HTTPS protokolü, HTTP ve SSL'in () birleşiminden doğmuştur. Güvenli Yuva Katmanı) veya daha yakın zamanda TLS (Aktarım Katmanı Güvenliği).

Bazı ciddi güvenlik ihlalleri nedeniyle SSL kullanımdan kaldırıldı ve yerini daha sağlam TLS aldı. Bu nedenle bu yazımızda TLS kullanarak web sunucunuz ve istemcileriniz arasındaki bağlantıların güvenliğini nasıl sağlayacağınızı açıklayacağız.

Bu eğitimde Apache web sunucunuzu zaten kurup yapılandırdığınız varsayılmaktadır. Değilse, devam etmeden önce lütfen bu sitedeki aşağıdaki makaleye bakın.

  1. LAMP'ı (Linux, MySQL/MariaDB, Apache ve PHP) RHEL/CentOS 7'ye yükleyin

OpenSSL ve Yardımcı Programların Kurulumu

Öncelikle Apache'in çalıştığından ve güvenlik duvarı üzerinden hem http hem de https'ye izin verildiğinden emin olun:


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

Daha sonra gerekli paketleri kurun:


yum update && yum install openssl mod_nss crypto-utils

Önemli: Mod_nss komutunu yukarıdaki komutta mod_ssl ile değiştirebileceğinizi lütfen unutmayın. TLS'yi uygulamak için NSS (Ağ Güvenliği Hizmeti) yerine >OpenSSL kitaplıkları (hangisini kullanacağınız tamamen size kalmıştır) ancak daha sağlam olduğu için bu makalede NSS'yi kullanacağız; örneğin, PKCS #11 gibi güncel şifreleme standartlarını destekler.

Son olarak, mod_nss kullanmayı seçtiyseniz veya tam tersini yaptıysanız mod_ssl'yi kaldırın.


yum remove mod_ssl

NSS'yi (Ağ Güvenliği Hizmeti) Yapılandırma

mod_nss yüklendikten sonra varsayılan yapılandırma dosyası /etc/httpd/conf.d/nss.conf olarak oluşturulur. Daha sonra tüm Listen ve VirtualHost yönergelerinin 443 bağlantı noktasına (HTTPS için varsayılan bağlantı noktası) işaret ettiğinden emin olmalısınız:


Listen 443
VirtualHost _default_:443

Ardından Apache'i yeniden başlatın ve mod_nss modülünün yüklenip yüklenmediğini kontrol edin:


apachectl restart
httpd -M | grep nss

Daha sonra /etc/httpd/conf.d/nss.conf yapılandırma dosyasında aşağıdaki düzenlemeler yapılmalıdır:

1. NSS veritabanı dizinini belirtin. Varsayılan dizini kullanabilir veya yeni bir tane oluşturabilirsiniz. Bu derste varsayılanı kullanacağız:


NSSCertificateDatabase /etc/httpd/alias

2. Şifreyi /etc/httpd/nss-db-password.conf dosyasındaki veritabanı dizinine kaydederek her sistem başlangıcında manuel şifre cümlesi girişinden kaçının:


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

Burada /etc/httpd/nss-db-password.conf YALNIZCA aşağıdaki satırı içerir ve mypassword daha sonra NSS veritabanı için ayarlayacağınız şifredir:


internal:mypassword

Ayrıca izinleri ve sahipliği sırasıyla 0640 ve root:Apache olarak ayarlanmalıdır:


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

3. Red Hat, SSL'in ve TLSv1.0'dan önceki tüm TLS sürümlerinin devre dışı bırakılmasını önerir. >POODLE SSLv3 güvenlik açığı (daha fazla bilgiyi burada bulabilirsiniz).

NSSProtocol yönergesinin her örneğinin aşağıdaki gibi olduğundan emin olun (başka sanal ana bilgisayarlar barındırmıyorsanız büyük olasılıkla yalnızca bir tane bulacaksınız):


NSSProtocol TLSv1.0,TLSv1.1

4. Bu kendinden imzalı bir sertifika olduğundan Apache yeniden başlatmayı reddedecek ve vereni geçerli olarak tanımayacak. Bu nedenle, bu özel durumda şunları eklemeniz gerekecektir:


NSSEnforceValidCerts off

5. Kesinlikle gerekli olmasa da, NSS veritabanı için bir şifre belirlemek önemlidir:


certutil -W -d /etc/httpd/alias