Bagaimana cara mengkonfigurasi SSL di apache?

10

Saya telah menginstal apache di RHEL 6. Semuanya berfungsi dengan baik. Semua perubahan dan konfigurasi apa yang harus dilakukan untuk menggunakan https: // localhost: 443 / .

Jika saya mengubah "Dengarkan 80" menjadi 443 itu adalah kesalahan koneksi SSL

"Kesalahan 107 (bersih :: ERR_SSL_PROTOCOL_ERROR): Kesalahan protokol SSL."

monu
sumber

Jawaban:

13

Jika Anda menggunakan apache2, maka Anda harus melakukan hal berikut:

Langkah 1: Gunakan OpenSSL untuk menghasilkan kunci yang digunakan untuk mengamankan situs Anda. Kunci-kunci ini digunakan ketika mengenkripsi dan mendekripsi lalu lintas ke situs aman Anda.

$ openssl genrsa -out mydomain.key 1024

Perintah ini akan membuat kunci pribadi 1024 bit dan meletakkannya di file mydomain.key.

Langkah 2: Hasilkan sertifikat Anda sendiri.

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

Langkah 3: Simpan kunci pribadi di direktori /etc/apache2/ssl.key/dan sertifikat di direktori /etc/apache2/ssl.crt/.

Catatan: The ssl.keydirektori harus hanya dapat dibaca oleh root.

Langkah 4: Sekarang Anda perlu mengedit httpd.conffile /etc/apache2.

Sekarang file ini harus menyertakan konten seperti ini:

NameVirtualHost *:80
NameVirtualHost *:443
Listen 443

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>


<VirtualHost *:443>
ServerAdmin [email protected]
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 [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>
pradeepchhetri
sumber
Tiga baris pertama tidak perlu. 1. NameVirtualHosttidak digunakan lagi dan akan dihapus di versi Apache yang akan datang. Saat ini sudah menjadi no-op. 2. Listen 443dapat menyebabkan masalah jika apache sudah dikonfigurasi untuk mendengarkan pada port 443 yang sudah ada pada banyak distribusi linux. Hanya tambahkan jika Anda yakin bahwa baris ini tidak dikonfigurasi di tempat lain.
lanoxx
3

Jangan mengubah Listen 80ke 443dalam /etc/httpd/conf/httpd.conf. SSL dikonfigurasi dalam /etc/httpd/conf.d/ssl.conf. Pada RHEL 6, SSL diaktifkan dan mendengarkan secara default dengan sertifikat yang ditandatangani sendiri.

Anda dapat membuka situs default menggunakan SSL hanya dengan menjelajah https://localhost(Anda tidak perlu menambahkan port ke bagian akhir URL).

Jika Anda ingin meneruskan semua permintaan HTTP ke HTTPS (yang menurut saya ingin Anda capai), Anda bisa menambahkan redirect permanen, atau menggunakan modul Apache mod_rewrite.

Cara termudah dan paling aman adalah mengatur pengalihan permanen. Aktifkan host virtual bernama dan tambahkan Redirectarahan ke VirtualHost di /etc/httpd/conf/httpd.conf.

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

Dengan menggunakan mod_rewrite, Anda juga membuat host virtual bernama. Ini bukan metode yang disarankan, tetapi akan berhasil.

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>

Jika Anda ingin mematikan SSL, beri komentar pada baris-baris ini /etc/httpd/conf.d/ssl.confdan nyalakan kembali Apache.

LoadModule ssl_module modules/mod_ssl.so
Listen 443
George M.
sumber
Sebenarnya, jika Anda menambahkan paket mod_ssl untuk RHEL6, itu menciptakan /etc/httpd/conf.d/ssl.conf, yang memuat modul dan mengatur <VirtualHost _default_:443>, dengan semua parameter yang diperlukan, masing-masing dengan komentar. The mod_sslpaket tidak secara otomatis diinstal jika Anda menginstal httpdpaket.
jsbillings
1
Saya ingin menambahkan satu hal saja ke penulisan ulang Anda: gunakan [R=301,L]alih-alih saja [R,L], dengan cara ini penulisan ulang menggunakan opsi permanen kode status HTTP 3xx .
dcestari