1 votos

ProxyPass No funciona en Ubuntu con SSL

Tengo dos AWS EC2 de los casos, un servidor web y un servidor de aplicaciones. Mi página de inicio es en mi servidor web. Antes de utilizar SSL, yo era capaz de acceder a una página, en mi servidor de aplicaciones, desde mi página de inicio utilizando

http://homePage.com/app1/page.php

Mi proxy host.conf tiene el siguiente contenido

<virtualhost *:80>
 ServerAdmin webmaster@localhost
 DocumentRoot /var/www/html/
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
 ProxyPreserveHost On
# Servers to proxy the connection, or
# List of application servers Usage
 ProxyPass /app1/ http://10.0.1.22:80/
 # ProxyPass /app1/ http://10.0.1.22:443/
</virtualhost>

Desde entonces he cambiado /etc/apache2/ports.conf y /etc/apache2/httpd.conf, así que mi página de inicio siempre utiliza SSL con el puerto 443. He creado un proxy ssl-host.conf archivo con el siguiente contenido.

<virtualHost *:443>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine On
     # Set the path to SSL certificate
     # Usage: SSLCertificateFile /path/to/cert.pem
    SSLCertificateFile /etc/apache2/ssl/homepage.com.crt
    SSLCertificateKeyFile /etc/apache2/ssl/homepage.com.key
    ProxyPreserveHost On
    ProxyPass  /app1/ https://10.0.1.22:443/
    ProxyPassReverse  /app1/ https://10.0.1.22:443/
    ServerName localhost
</VirtualHost>

Después de hacer de proxy ssl-host.conf, he entrado en la siguiente

sudo a2ensite  proxy-ssl-host.conf
service apache2 reload
sudo systemctl restart apache2.service

Ahora, cuando voy a mi navegador y entrar

https://homePage.com/app1/page.php

Puedo conseguir

The requested URL /app1/page.php was not found on this server.

Apache/2.4.18 (Ubuntu) Server at homePage.com Port 443

EDIT 1:

He intentado

sudo netstat -ntpl | grep :443

en el servidor de la aplicación y no tiene nada que hacer así que apache no estaba escuchando en el puerto 443 del servidor. He añadido

Listen 443

después de

Listen 80

en los puertos.conf y ahora se

tcp6       0      0 :::443                  :::*                    LISTEN      2205/apache2

después de

sudo netstat -ntpl | grep :443

Por desgracia, que no resuelve ninguno de los problemas en el navegador.

EDIT 2:

Cuando fui a la web de servidor y entró

 wget https://10.0.1.22/page.php

Tengo

--2018-02-18 20:58:32--  https://10.0.1.22/page.php
Connecting to 10.0.1.22:443... connected.
OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Unable to establish SSL connection.

Cuando entré

wget https://10.0.1.22/app1/page.php

Tengo

--2018-02-18 20:59:37--  https://10.0.1.22/app1/page.php
Connecting to 10.0.1.22:443... connected.
OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Unable to establish SSL connection.

Cuando entré

wget http://10.0.1.22

Tengo

--2018-02-18 19:32:45--  http://10.0.1.22/
Connecting to 10.0.1.22:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4198 (4.1K) [text/html]
Saving to: ‘index.html'

index.html                                100%[=====================================================================================>]   4.10K  --.-KB/s    in 0s

2018-02-18 19:32:45 (564 MB/s) - ‘index.html' saved [4198/4198]

Cuando me configurar SSL en mi DMZ, en el sótano de mi casa, sólo tuve que instalar los certificados SSL en mi servidor web y que se llevó a efecto en mi servidor de la aplicación así. Sin embargo, en el sótano de mi casa, que tenía la misma dirección IP pública. También el servidor web corriendo CentOS y la aplicación de servidor Debian. Con mi nube DMZ, tienen diferentes direcciones IP y de tanto correr en Ubuntu. Me preguntaba si este requiere de la configuración de los certificados, en mi servidor de aplicaciones, de la misma manera que las puse en mi servidor web.

1voto

DisgruntledGoat Puntos21368

Como usted está usando los puertos estándar puede omitir :443 y :80 de la configuración de proxy.

La primera prueba que se iba a utilizar es para comprobar que https://10.0.1.22:443/app1/page.php es accesible desde el servidor web. Las herramientas wget o curl son comúnmente utilizados para este.

Es probable que la validación SSL está fallando https://10.0.1.22. Usted necesitará un certificado en el servidor en 10.0.1.22 el cual debe estar a la escucha para el tráfico HTTPS. Parece que no son de la reescritura de la Host de encabezado, entonces usted debería ser capaz de utilizar el certificado de su servidor front-end en el servidor back-end.

Me confías en tu red local podría proxy http://10.0.1.22. Esto expondrá su app1 el tráfico de búsqueda en la red local.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: