Estoy tratando de configurar Apache con SSl y solicitudes SSL proxy para mi instancia de Tomcat. Creo que hice que el SSL funcione pero todavía hay un error que aparece:
Bad Gateway The proxy server received an invalid response from an upstream server.
* SSL Virtualhost *
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost _default_:443>
SSLEngine On
SSLProxyEngine On
DocumentRoot "/var/apache-tomcat-7.0.34/webapps/Learn2Gether/"
SSLCertificateFile /etc/pki/tls/learn2gether/cert-6090205098829887.pem
SSLCertificateKeyFile /etc/pki/tls/learn2gether/private_key_unlocked.pem
SSLCertificateChainFile /etc/pki/tls/learn2gether/rubca-chain.pem
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
ServerName www.learn2gether.rubel.rub.de
ServerAlias learn2gether.rubel.rub.de
#RewriteRule ^\/$ /Learn2Gether/index.html [PT]
##RewriteRule ^/(.*)$ /$1 [PT]
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / https://localhost:8443/
ProxyPassReverse / https://localhost:8443/
</VirtualHost>
~
HTTP VH redirigir a HTTPS
NameVirtualHost *:80
<VirtualHost _default_:80>
ServerName www.learn2gether.rubel.rub.de
ServerAlias learn2gether.rubel.ruhr-uni-bochum.de
RewriteEngine on
# DocumentRoot "/var/apache-tomcat-7.0.34/webapps/Learn2Gether/"
RewriteCond %{HTTP_HOST} !^learn2gether.rubel.ruhr-uni-bochum\.de [NC]
RewriteRule ^/(.*)$ http://learn2gether.rubel.ruhr-uni-bochum.de/$1 [R=301,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}$1 [L]
#RewriteRule ^\/$ /Learn2Gether/index.html [PT]
#RewriteRule ^/(.*)$ /$1 [PT]
#ProxyPass / https://localhost:8443/
#ProxyPassReverse / https://localhost:8443/
</VirtualHost>
Conector apache tomcats
<Connector port="8443"
protocol="HTTP/1.1"
connectionTimeout="20000"
compression="on"
compressionMinSize="32"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,text/css"
redirectPort="8443"
URIEncoding="UTF-8"
proxyPort="443"
proxyName="learn2gether.rubel.ruhr-uni-bochum.de"
scheme="https"
secure="true"
/>
apache-2.2
ssl
tomcat
mod-rewrite
virtualhost
SaifDeen
fuente
fuente
Respuestas:
Al enviar http o https a https, debe configurar apache como un cliente ssl . Cuando apache habla con su servidor Tomcat, funciona como un cliente web después de todo. Sin embargo, Apache generalmente no funcionará como un cliente SSL listo para usar.
En primer lugar, te sugiero que primero consideres si realmente necesitas esto, por qué lo estás haciendo. La práctica común cuando Tomcat y Apache viven en el mismo servidor es hacer que Tomcat solo sirva http (o ajp) simple y descargue ssl en el servidor Apache. Por lo general, no es necesario tener SSL entre el servidor apache y el servidor tomcat. No tener ssl en el servidor tomcat te ahorrará muchos problemas.
Todo lo que necesita hacer es, por ejemplo, definir un conector HTTP en el puerto 8080 en su instancia de tomcat, y redirigir todas las solicitudes desde su host virtual SSL Apache:
Pero si todavía decide que necesita proxy SSL a SSL, deberá agregar más cambios. Apache necesita poder funcionar como un cliente SSL, así como un servidor SSL. Cuando Apache habla con otro servidor usando https, después de todo, toma el rol de cliente. Esto no es tan fácil, y hay muchos problemas con los que puedes enfrentarte. Deberá agregar esto:
Luego, en esta ruta, debe colocar el certificado de CA utilizado para firmar el certificado utilizado por el servidor con el que se comunica. Si utiliza un certificado "autofirmado", deberá colocarlo en este directorio.
Una vez que haya hecho eso, debe ejecutar "c_rehash" en ese directorio. c_rehash es parte de una distribución estándar de openssl. c_rehash crea alias hash en este directorio. Apache los necesita.
Para probar si todo está allí, puede hacer lo siguiente:
Si la conexión se realiza correctamente, recibirá un mensaje donde puede escribir una solicitud. Solo intenta algo.
y mira si consigues algo. Si esta prueba es exitosa, apache también debería funcionar.
Ahora puede agregar las declaraciones ReWriteRule o Proxy para reenviar las conexiones a su servidor https.
fuente