enlazar el puerto ssl de apache con un puerto diferente con el mismo puerto 443 de openssl

8

Tengo un servidor (base de Linux) en el que instalé dotcms y se ejecuta en el puerto 80 y openssl está en el puerto 443. Ambos se inician en el proceso de ejecución. Recientemente instalé apache en mi servidor. y cuando comencé Apache se atascó porque el puerto SSL predeterminado en Apache es 443 y Apache es 80, ambos ya se están ejecutando. Solo para mi tarea, comencé solo apache sin ssl en el puerto 90. pero también quiero comenzar ssl con apache obviamente en un puerto diferente. ¿Es posible vincular apache ssl con el mismo openssl?

Necesito mis dotcms predeterminados en proceso de ejecución, no puedo detenerlo en cualquier caso, solo puedo reiniciar mi servicio dotcms si se requiere un inicio de apache. pero necesito dotcms y apache para ejecutar ambos en paralelo.

ver imagen en ese enlace (debido a menos reputación no pude subir la imagen) http://developers89.byethost14.com/images/ssl.png

Waqas Ahmed
fuente
1
Proporcione información como texto en lugar de imagen (legible, de búsqueda, etc.).
Karl Richter

Respuestas:

17

Sí, es posible vincular Apache a un puerto diferente y aún usar SSL.

Reemplace las Listendirectivas en su configuración de apache. La configuración debe contener líneas como

Listen 80
Listen 443

Apache escuchará en los puertos definidos con estas opciones de configuración. Reemplácelos y Apache escuchará en un puerto diferente.

Sin embargo, aún necesita decirle a Apache qué servir en los puertos anteriores. Suponga que desea que Apache comience a escuchar en el puerto 8080 (sin formato) y 4433 (ssl). Luego debe reemplazar las directivas de Listen para

Listen 8080
Listen 4433

Después de esto, defina dos VirtualHosts en estos puertos como este:

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>

Si no tiene más definición de VirtualHost, no tiene que incluir la ServerAliasdirectiva (o ServerName, para el caso).

Si reinicia Apache, escuchará en 8080 las conexiones sin cifrar, y en el puerto 4433 para SSL. Asegúrese de no tener ninguna definición antigua de VirtualHost que contenga el número de puerto incorrecto.

Lacek
fuente
Gracias, el puerto está activado pero cuando intento mydomain.com:4433 me da el error "Error de conexión SSL"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
cuando intento habilitar el módulo ssl con este comando en linux a2enmod ssl. da error: * Restarting web server apache2 ... waiting (98)Address already in use: make_sock: could not bind to address [::]:4433y cuando desactivo ese módulo y reinicio el puerto apache 4433 se está ejecutando y enfrenta el error resaltado en el comentario anterior
Waqas Ahmed
Detenga el servidor web Apache y asegúrese de que no se ejecuten instancias de Apache. Compruebe si los puertos están abiertos con el comando "netstat -napt | grep 4433" (no debería haber salida). Luego ejecute a2enmod para habilitar el módulo SSL. Además, asegúrese de que las directivas "Listen" aparezcan en los archivos de configuración solo una vez (por ejemplo, la segunda directiva "Listen 4433" generará un error).
Lacek
Con Apache 2.4.10 Invalid ServerName "*" use ServerAlias to set multiple server names.
obtengo
He actualizado la respuesta, por lo que la configuración también funcionará con Apache 2.4. Gracias por señalar esto.
Lacek