Apache'de SSL nasıl yapılandırılır?


10

RHEL 6'da apache kurdum. Her şey yolunda gidiyor. Https: // localhost: 443 / kullanmak için tüm değişikliklerin ve yapılandırmaların yapılması gerekir .

"Listen 80" i 443 olarak değiştirirsem SSL bağlantı hatası veriyor

"Hata 107 (net :: ERR_SSL_PROTOCOL_ERROR): SSL protokolü hatası."

Yanıtlar:


13

Kullanıyorsanız apache2, aşağıdakileri yapmanız gerekir:

Adım 1: Sitenizi güvenceye almak için kullanılan anahtarları üretmek için OpenSSL kullanın. Bu anahtarlar güvenli sitenize gelen trafiği şifrelemek ve şifresini çözmek için kullanılır.

$ openssl genrsa -out mydomain.key 1024

Bu komut 1024 bit özel bir anahtar oluşturur ve bunu etkialanim.key dosyasına koyar.

2. Adım: Kendi sertifikanızı oluşturun.

$ openssl req -new -key mydomain.key -x509 -out mydomain.crt

Adım 3: Özel anahtarı dizinde /etc/apache2/ssl.key/ve sertifikayı dizinde saklayın /etc/apache2/ssl.crt/.

Not:ssl.key dizin sadece root tarafından okunabilir olmalıdır.

Adım 4: Şimdi httpd.confdosyayı düzenlemeniz gerekiyor /etc/apache2.

Şimdi bu dosya aşağıdaki gibi bir içerik içermelidir:

NameVirtualHost *:80
NameVirtualHost *:443
Listen 443

<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>


<VirtualHost *:443>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain-secure
ServerName mail.mydomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/mydomain.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/mydomain.key
</VirtualHost>


<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>


<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>

İlk üç satır gerekli değildir. 1. NameVirtualHostkullanımdan kaldırıldı ve Apache'nin gelecekteki sürümlerinde kaldırılacak. Şu anda bir operasyon yok. 2. Listen 443apache zaten birçok linux dağıtımında zaten geçerli olan 443 numaralı bağlantı noktasını dinlemek üzere yapılandırılmışsa sorunlara neden olabilir. Yalnızca bu satırın başka bir yerde yapılandırılmadığından eminseniz ekleyin.
lanoxx

3

Değiştirmeyin Listen 80için 443de /etc/httpd/conf/httpd.conf. SSL yapılandırıldı /etc/httpd/conf.d/ssl.conf. RHEL 6'da SSL, kendinden imzalı bir sertifika ile varsayılan olarak etkindir ve dinler.

Varsayılan siteye SSL'yi kullanarak yalnızca siteye giderek erişebilirsiniz https://localhost(bağlantı noktasını URL'nin sonuna eklemenize gerek yoktur).

Tüm HTTP isteklerini HTTPS'ye iletmek istiyorsanız (bu, elde etmeye çalıştığınıza inanıyorum), kalıcı bir yönlendirme ekleyebilir veya Apache modülünü kullanabilirsiniz mod_rewrite.

En kolay ve en güvenli yol, kalıcı bir yönlendirme oluşturmaktır. Adlandırılmış sanal ana makineleri etkinleştirin Redirectve VirtualHost in'e bir yönerge ekleyin /etc/httpd/conf/httpd.conf.

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName localhost
   Redirect permanent / https://localhost
</VirtualHost>

Kullanarak mod_rewrite, adlandırılmış bir sanal ana bilgisayar da oluşturabilirsiniz. Bu önerilen yöntem değildir, ancak işe yarayacaktır.

NameVirtualHost *:80
<VirtualHost *:80>
   # Enable the Rewrite engine
   RewriteEngine On
   # Make sure the connection is not already HTTPS
   RewriteCond %{HTTPS} !=on
   # This rewrites the URL and forwards to https
   RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

SSL'yi kapatmak istiyorsanız, bu satırları yorumlayın /etc/httpd/conf.d/ssl.confve Apache'yi yeniden başlatın.

LoadModule ssl_module modules/mod_ssl.so
Listen 443

Aslında, RHEL6 için mod_ssl paketini eklerseniz, modülü yükleyen ve <VirtualHost _default_:443>her biri yorum içeren gerekli tüm parametreleri içeren bir /etc/httpd/conf.d/ssl.conf oluşturur . mod_sslEğer yüklü ise paket otomatik yüklü değildir httpdpaketi.
jsbillings

1
Yeniden yazma işleminize yalnızca bir şey eklemek istiyorum: [R=301,L]bunun yerine [R,L]yeniden yazma işlemi HTTP 3xx durum kodlarının kalıcı seçeneğini kullanıyor .
dcestari
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.