ikat port ssl apache dengan port yang berbeda dengan port openssl yang sama 443

8

Saya memiliki server (basis linux) di mana saya menginstal dotcms dan itu berjalan pada port 80 dan openssl pada port 443. keduanya dimulai dalam proses yang berjalan. Baru-baru ini saya menginstal apache di server saya. dan ketika saya mulai apache macet karena port default ssl pada apache adalah 443 dan apache adalah 80, keduanya sudah berjalan. Hanya untuk tugas saya, saya mulai hanya apache tanpa ssl pada port 90. tetapi saya ingin memulai ssl dengan apache juga jelas pada port yang berbeda. Apakah mungkin untuk mengikat apache ssl dengan openssl yang sama?

Saya membutuhkan dotcms default saya dalam menjalankan proses. Saya tidak bisa menghentikannya, saya hanya dapat memulai kembali layanan dotcms saya jika apache mulai diperlukan. tetapi saya perlu dotcms dan apache untuk menjalankan keduanya secara paralel.

lihat gambar di tautan itu (karena kurang reputasi saya tidak bisa mengunggah gambar) http://developers89.byethost14.com/images/ssl.png

Waqas Ahmed
sumber
1
Berikan informasi sebagai teks daripada gambar (dapat dibaca, dapat dicari, dll).
Karl Richter

Jawaban:

17

Ya, dimungkinkan untuk mengikat Apache ke port yang berbeda dan masih menggunakan SSL.

Ganti Listenarahan dalam konfigurasi apache Anda. Konfigurasi harus berisi baris seperti

Listen 80
Listen 443

Apache akan mendengarkan pada port yang ditentukan dengan opsi konfigurasi ini. Ganti mereka, dan Apache akan mendengarkan pada port yang berbeda.

Namun, Anda masih perlu memberi tahu Apache apa yang harus dilayani pada port di atas. Misalkan Anda ingin Apache mulai mendengarkan pada port 8080 (polos), dan 4433 (ssl). Maka Anda perlu mengganti arahan Listen to

Listen 8080
Listen 4433

Setelah ini, tentukan dua VirtualHost pada port-port ini seperti ini:

NameVirtualHost 0.0.0.0:8080
NameVirtualHost 0.0.0.0:4433

<VirtualHost 0.0.0.0:8080>
    ServerName the.server.name
    ServerAlias *
    DocumentRoot /var/www/plain
</VirtualHost>

<VirtualHost 0.0.0.0:4433>
    ServerName the.server.name
    ServerAlias *
    DocumentRoot /var/www/ssl

    SSLEngine On
    SSLCertificateFile /the/certificate/file
    SSLCertificateKeyFile /the/key/file
</VirtualHost>

Jika Anda tidak memiliki definisi VirtualHost lagi, Anda tidak perlu memasukkan ServerAliasarahan (atau ServerName, dalam hal ini).

Jika Anda me-restart Apache, ia akan mendengarkan pada 8080 untuk koneksi yang tidak terenkripsi, dan pada port 4433 untuk SSL. Pastikan untuk tidak memiliki definisi VirtualHost lama yang berisi nomor port yang salah.

Lacek
sumber
Terima kasih, port aktif tetapi ketika saya mencoba mydomain.com:4433 ia memberikan kesalahan "SSL connection error"Unable to make a secure connection to the server. This may be a problem with the server, or it may be requiring a client authentication certificate that you don't have.
Waqas Ahmed
ketika saya mencoba mengaktifkan modul ssl dengan perintah ini di linux a2enmod ssl. itu memberikan kesalahan: * Restarting web server apache2 ... waiting (98)Address already in use: make_sock: could not bind to address [::]:4433dan ketika saya menonaktifkan modul itu dan me-restart apache port 4433 sedang berjalan dan menghadapi kesalahan yang disorot dalam komentar di atas
Waqas Ahmed
Hentikan server web apache, dan pastikan tidak ada instance Apache yang tetap berjalan. Periksa apakah port terbuka dengan perintah "netstat -napt | grep 4433" (seharusnya tidak ada output). Kemudian jalankan a2enmod untuk mengaktifkan modul SSL. Juga, pastikan bahwa arahan "Dengarkan" hanya muncul sekali dalam file konfigurasi (misalnya arahan "Dengarkan 4433" yang kedua akan menghasilkan kesalahan).
Lacek
Dengan Apache 2.4.10 saya mendapatkanInvalid ServerName "*" use ServerAlias to set multiple server names.
Ortomala Lokni
Saya telah memperbarui jawabannya, sehingga konfigurasi akan bekerja dengan Apache 2.4 juga. Terima kasih telah menunjukkan ini.
Lacek