SSL Sertifikalı İsme Dayalı Sanal Barındırma ile Bağımsız Apache Sunucusu Nasıl Kurulur - Bölüm 4


LFCE (Linux Foundation Sertifikalı Mühendis'in kısaltması), Linux sistemlerindeki ağ hizmetlerini kurma, yönetme ve sorunlarını giderme konusunda uzmanlığa sahip ve eğitimli bir profesyoneldir. sistem mimarisinin tasarımı, uygulanması ve sürekli bakımı.

Bu makalede size Apache'nin web içeriğini sunacak şekilde nasıl yapılandırılacağını ve kendinden imzalı bir sertifika da dahil olmak üzere isme dayalı sanal ana bilgisayarların ve SSL'nin nasıl kurulacağını göstereceğiz.

Linux Vakfı Sertifikasyon Programına (LFCE) Giriş.

Not: Bu makalenin Apache hakkında kapsamlı bir rehber olmaması, bunun yerine LFCE< için bu konu hakkında kendi kendine çalışma için bir başlangıç noktası olması gerekmektedir. sınav. Bu nedenle bu eğitimde Apache ile yük dengelemeyi de ele almıyoruz.

Aynı görevleri yerine getirmenin başka yollarını zaten biliyor olabilirsiniz; Linux Temel Sertifikasyonunun kesinlikle performansa dayalı olduğu göz önüne alındığında bu tamam. Bu nedenle, "işi yaptığınız" sürece sınavı geçme şansınız yüksektir.

Gereksinimler

Apache'yi yükleme ve başlatma talimatları için lütfen mevcut serinin Bölüm 1'ine (“Ağ Hizmetlerini Yükleme ve Önyüklemede Otomatik Başlatmayı Yapılandırma”) bakın.

Şimdiye kadar Apache web sunucusunu kurmuş ve çalıştırmış olmalısınız. Bunu aşağıdaki komutla doğrulayabilirsiniz.

ps -ef | grep -Ei '(apache|httpd)' | grep -v grep

Not: Yukarıdaki komut, Apache veya httpd'nin (en yaygın adlar) varlığını kontrol eder. web arka plan programı) çalışan işlemler listesi arasında. Apache çalışıyorsa aşağıdakine benzer çıktı alırsınız.

Apache kurulumunu test etmenin ve çalışıp çalışmadığını kontrol etmenin nihai yöntemi, bir web tarayıcısı başlatmak ve sunucunun IP'sini işaret etmektir. Aşağıdaki ekranla veya en azından Apache'nin çalıştığını doğrulayan bir mesajla karşılaşmalıyız.

Apache'yi Yapılandırma

Apache'nin ana yapılandırma dosyası, dağıtımınıza bağlı olarak farklı dizinlerde bulunabilir.

/etc/apache2/apache2.conf 		[For Ubuntu]
/etc/httpd/conf/httpd.conf		[For CentOS]
/etc/apache2/httpd.conf 		[For openSUSE]

Şanslıyız ki, konfigürasyon direktifleri Apache proje web sitesinde son derece iyi bir şekilde belgelenmiştir. Bu makale boyunca bunlardan bazılarına değineceğiz.

Sayfaları Apache ile Bağımsız Bir Sunucuda Sunma

Apache'nin en temel kullanımı, web sayfalarını henüz hiçbir sanal ana bilgisayarın yapılandırılmadığı bağımsız bir sunucuda sunmaktır. DocumentRoot yönergesi Apache'nin web sayfaları belgelerini sunacağı dizini belirtir.

Varsayılan olarak tüm isteklerin bu dizinden alındığını, ancak sembolik bağlantıları da kullanabileceğinizi ve/veya takma adların başka konumlara işaret etmek için de kullanılabileceğini unutmayın.

Alias yönergesiyle eşleşmediği sürece (belgelerin DocumentRoot tarafından belirtilen dizin yerine yerel dosya sisteminde saklanmasına izin verir), sunucu istenen URL'den gelen yolu ekler Belgenin yolunu oluşturmak için belge köküne.

Örneğin, aşağıdaki DocumentRoot verildiğinde:

Web tarayıcısı [Sunucu IP veya ana bilgisayar adı]/lfce/tecmint.html'yi işaret ettiğinde, sunucu /var/ dosyasını açacaktır. www/html/lfce/tecmint.html (böyle bir dosyanın mevcut olduğunu varsayarak) ve 200 (OK) yanıtıyla olayı erişim günlüğüne kaydedin.

Erişim günlüğü genellikle /var/log içinde access.log veya access_log gibi temsili bir ad altında bulunur. Hatta bu günlüğü (ve hata günlüğünü de) bir alt dizinde (örneğin, CentOS'ta /var/log/httpd) bulabilirsiniz. Aksi takdirde, başarısız olan olay erişim günlüğüne yine de 404 (Bulunamadı) yanıtıyla kaydedilecektir.

Ayrıca, başarısız olan olaylar hata günlüğüne kaydedilecektir:

Erişim günlüğünün biçimi, ana yapılandırma dosyasındaki LogFormat yönergesi kullanılarak ihtiyaçlarınıza göre özelleştirilebilir, ancak aynı şeyi hata günlüğüyle yapamazsınız .

Erişim günlüğünün varsayılan biçimi aşağıdaki gibidir:

LogFormat "%h %l %u %t \"%r\" %>s %b" [nickname]

Yüzde işaretinin önündeki harflerin her biri, sunucunun belirli bir bilgiyi günlüğe kaydetmesini belirtir:

String

Açıklama

 %h

 Uzak ana makine adı veya IP adresi

 %l

 Uzak günlük adı

 %u

 İsteğin kimliği doğrulanırsa uzak kullanıcı

 %t

 İsteğin alındığı tarih ve saat

 %r

 Sunucuya gönderilen ilk istek satırı

 %>s

 İsteğin son durumu

 %b

 Yanıtın boyutu [bayt]

ve takma ad, tüm yapılandırma dizesini tekrar girmeye gerek kalmadan diğer günlükleri özelleştirmek için kullanılabilecek isteğe bağlı bir takma addır.

Daha fazla seçenek için Apache belgelerindeki LogFormat yönergesine [Özel günlük biçimleri bölümü] başvurabilirsiniz.

Her iki günlük dosyası da (erişim ve hata), Apache sunucusunda olup bitenleri bir bakışta hızlı bir şekilde analiz etmek için harika bir kaynağı temsil eder. Söylemeye gerek yok, bunlar sistem yöneticisinin sorunları gidermek için kullandığı ilk araçtır.

Son olarak, bir diğer önemli yönerge de sunucuya belirtilen bağlantı noktası veya adres/bağlantı noktası kombinasyonu üzerinden gelen istekleri kabul etmesini söyleyen Listen yönergesidir:

Yalnızca bir bağlantı noktası numarası tanımlanmışsa Apache, tüm ağ arayüzlerinde verilen bağlantı noktasını dinleyecektir ('tüm ağ arayüzlerini' belirtmek için * joker karakteri kullanılır).

Hem IP adresi hem de bağlantı noktası belirtilirse apache, verilen bağlantı noktası ve ağ arayüzü kombinasyonunu dinleyecektir.

Lütfen (aşağıdaki örneklerde göreceğiniz gibi), dinlenecek birden fazla adresi ve bağlantı noktasını belirtmek için birden fazla Listen yönergesinin aynı anda kullanılabileceğini unutmayın. Bu seçenek, sunucuya, listelenen adreslerden ve bağlantı noktalarından herhangi birinden gelen isteklere yanıt vermesi talimatını verir.

İsme Dayalı Sanal Konakları Ayarlama

Sanal ana bilgisayar kavramı, aynı fiziksel makine tarafından sunulan ayrı bir siteyi (veya etki alanını) tanımlar. Aslında birden fazla site/alan, tek bir "gerçek" sunucu üzerinden sanal ana bilgisayar olarak sunulabilir. Bu süreç, farklı sitelerin farklı web sunucuları tarafından sunulduğunu düşünen son kullanıcı için şeffaftır.

İsme dayalı sanal barındırma, sunucunun istemcinin ana bilgisayar adını HTTP üstbilgilerinin bir parçası olarak raporlamasına güvenmesine olanak tanır. Böylece, bu tekniği kullanarak birçok farklı ana bilgisayar aynı IP adresini paylaşabilir.

Her sanal ana bilgisayar DocumentRoot içindeki bir dizinde yapılandırılır. Bizim durumumuz için, test kurulumu için her biri ilgili dizinde bulunan aşağıdaki yapay etki alanlarını kullanacağız:

  1. ilovelinux.com – /var/www/html/ilovelinux.com/public_html
  2. linuxrocks.org – /var/www/html/linuxrocks.org/public_html

Sayfaların doğru şekilde görüntülenmesi için, her VirtualHost'un dizinini 755 olarak chmod yapacağız:

chmod -R 755 /var/www/html/ilovelinux.com/public_html
chmod -R 755 /var/www/html/linuxrocks.org/public_html

Daha sonra, her public_html dizininde örnek bir index.html dosyası oluşturun:

<html>
  <head>
    <title>www.ilovelinux.com</title>
  </head>
  <body>
    <h1>This is the main page of www.ilovelinux.com</h1>
  </body>
</html>

Son olarak, CentOS ve openSUSE'de /etc/httpd/conf/httpd.conf veya / dosyasının altına aşağıdaki bölümü ekleyin. sırasıyla etc/apache2/httpd.conf adresine gidin veya zaten varsa değiştirin.


<VirtualHost *:80>
     ServerAdmin [email  
     DocumentRoot /var/www/html/ilovelinux.com/public_html
     ServerName www.ilovelinux.com
     ServerAlias www.ilovelinux.com ilovelinux.com
     ErrorLog /var/www/html/ilovelinux.com/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/ilovelinux.com/access.log	myvhost
</VirtualHost>
<VirtualHost *:80>
     ServerAdmin [email  
     DocumentRoot /var/www/html/linuxrocks.org/public_html
     ServerName www.linuxrocks.org
     ServerAlias www.linuxrocks.org linuxrocks.org
     ErrorLog /var/www/html/linuxrocks.org/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/linuxrocks.org/access.log	myvhost
</VirtualHost>

Lütfen her sanal ana bilgisayar tanımını /etc/httpd/conf.d dizinindeki ayrı dosyalara da ekleyebileceğinizi unutmayın. Bunu yapmayı seçerseniz, her bir yapılandırma dosyası aşağıdaki gibi adlandırılmalıdır:

/etc/httpd/conf.d/ilovelinux.com.conf
/etc/httpd/conf.d/linuxrocks.org.conf

Yani site veya alan adına .conf eklemeniz gerekiyor.

Ubuntu'da her bir yapılandırma dosyası /etc/apache2/sites-available/[site name].conf olarak adlandırılır. Daha sonra her site sırasıyla aşağıdaki gibi a2ensite veya a2dissite komutlarıyla etkinleştirilir veya devre dışı bırakılır.

a2ensite /etc/apache2/sites-available/ilovelinux.com.conf
a2dissite /etc/apache2/sites-available/ilovelinux.com.conf
a2ensite /etc/apache2/sites-available/linuxrocks.org.conf
a2dissite /etc/apache2/sites-available/linuxrocks.org.conf

a2ensite ve a2dissite komutları, sanal ana bilgisayar yapılandırma dosyasına bağlantılar oluşturur ve bunları /etc/apache2/sites-enabled dizin.

Başka bir Linux kutusundan her iki siteye de göz atabilmek için, bu alan adlarına gelen istekleri belirli bir IP'ye yönlendirmek amacıyla o makinedeki /etc/hosts dosyasına aşağıdaki satırları eklemeniz gerekecektir. adres.


[IP address of your web server]	www.ilovelinux.com
[IP address of your web server]	www.linuxrocks.org 

Bir güvenlik önlemi olarak, SELinux, Apache'in varsayılan /var/log/httpd dışında bir dizine günlük yazmasına izin vermez.

SELinux'u devre dışı bırakabilir veya doğru güvenlik içeriğini ayarlayabilirsiniz:


chcon system_u:object_r:httpd_log_t:s0 /var/www/html/xxxxxx/error.log

burada xxxxxx, Sanal Ana Bilgisayarlarınızı tanımladığınız /var/www/html içindeki dizindir.

Apache'yi yeniden başlattıktan sonra yukarıdaki adreslerde aşağıdaki sayfayı görmelisiniz:

Apache ile SSL Kurulumu ve Yapılandırması

Son olarak Apache ile kullanmak üzere kendinden imzalı bir sertifika oluşturup yükleyeceğiz. Bu tür bir kurulum, özel LAN gibi küçük ortamlarda kabul edilebilir.

Ancak sunucunuz içeriği İnternet üzerinden dış dünyaya gösterecekse, orijinalliğini doğrulamak için 3. bir tarafça imzalanmış bir sertifika yüklemek isteyeceksiniz. Her iki durumda da bir sertifika, sitenize, sitenizden veya sitenizden iletilen bilgileri şifrelemenize olanak tanır.

CentOS ve openSUSE'de mod_ssl paketini yüklemeniz gerekir.

yum update && yum install mod_ssl 		[On CentOS]
zypper refresh && zypper install mod_ssl	[On openSUSE]

Ubuntu'da ise Apache için SSL modülünü etkinleştirmeniz gerekir.

a2enmod ssl

Aşağıdaki adımlar bir CentOS test sunucusu kullanılarak açıklanmaktadır, ancak kurulumunuz diğer dağıtımlarda hemen hemen aynı olmalıdır (herhangi bir sorunla karşılaşırsanız, yorumları kullanarak sorularınızı bırakmaktan çekinmeyin) biçim).

1. Adım [İsteğe Bağlı]: Sertifikalarınızı depolamak için bir dizin oluşturun.

mkdir /etc/httpd/ssl-certs

2. Adım: Kendinden imzalı sertifikanızı ve onu koruyacak anahtarı oluşturun.

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl-certs/apache.key -out /etc/httpd/ssl-certs/apache.crt

Yukarıda listelenen seçeneklerin kısa bir açıklaması:

  1. req -X509 bir x509 sertifikası oluşturduğumuzu belirtir.
  2. -nodes (NO DES), “anahtarı şifrelemeyin” anlamına gelir.
  3. -gün 365, sertifikanın geçerli olacağı gün sayısıdır.
  4. -newkey rsa:2048, 2048 bitlik bir RSA anahtarı oluşturur.
  5. -keyout /etc/httpd/ssl-certs/apache.key RSA anahtarının mutlak yoludur.
  6. -out /etc/httpd/ssl-certs/Apache.crt sertifikanın mutlak yoludur.

3. Adım: Seçtiğiniz sanal ana bilgisayar yapılandırma dosyasını (veya daha önce açıklandığı gibi /etc/httpd/conf/httpd.conf dosyasındaki ilgili bölümünü) açın ve aşağıdaki satırları ekleyin. 443 bağlantı noktasını dinleyen bir sanal ana bilgisayar bildirimi.

SSLEngine on
SSLCertificateFile /etc/httpd/ssl-certs/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl-certs/apache.key

eklemeniz gerektiğini lütfen unutmayın.

NameVirtualHost *:443

üstte, hemen aşağıda

NameVirtualHost *:80

Her iki yönerge de apache'ye tüm ağ arayüzlerinin 443 ve 80 bağlantı noktalarını dinlemesi talimatını verir.

Aşağıdaki örnek /etc/httpd/conf/httpd.conf adresinden alınmıştır:

Daha sonra Apache'yi yeniden başlatın,

service apache2 restart 			[sysvinit and upstart based systems]
systemctl restart httpd.service 		[systemd-based systems]

Ve tarayıcınızı https://www.ilovelinux.com adresine yönlendirin. Aşağıdaki ekranla karşılaşacaksınız.

Devam edin ve “Riskleri anlıyorum” ve “İstisna ekle”yi tıklayın.

Son olarak, “Bu istisnayı kalıcı olarak sakla” seçeneğini işaretleyin ve “Güvenlik İstisnasını Onayla” seçeneğini tıklayın.

Ve https kullanılarak ana sayfanıza yönlendirileceksiniz.

Özet

Bu yazıda, veri aktarımını güvenli hale getirmek için Apache ve isim tabanlı sanal barındırmayı SSL ile nasıl yapılandıracağımızı gösterdik. Herhangi bir nedenle herhangi bir sorunla karşılaşırsanız aşağıdaki yorum formunu kullanarak bize bildirmekten çekinmeyin. Başarılı bir kurulum gerçekleştirmenize yardımcı olmaktan mutluluk duyacağız.

Ayrıca Oku

  1. Apache IP Tabanlı ve İsim Tabanlı Sanal Barındırma
  2. Vhost'ları Etkinleştirme/Devre Dışı Bırakma Seçenekleri ile Apache Sanal Konakları Oluşturma
  3. “Apache GUI” Aracını Kullanarak “Apache Web Sunucusu”nu İzleyin