Tomcat'in önünde apache ile SSL kurulumu


9

im Tomcat örneğime SSl ve proxy SSL istekleriyle Apache kurmaya çalışıyorum. Ben SSL çalışması yaptı düşünüyorum ama hala ortaya çıkan bir hata var:

Bad Gateway

The proxy server received an invalid response from an upstream server.

* SSL Sanal Ana Bilgisayarı *

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>
~               

HTTPS'ye HTTP VH yönlendirmesi

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>

Tomcats Apache Bağlayıcı

    <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"
/>

Tomcat sunucusu kendinden imzalı bir sertifika ile yapılandırılmış mı? Ayrıca, tomcat için ssl ön ucu olarak apache kullanıyorsanız neden tomcat sunucusunda ssl kullanıyorsunuz? En iyi uygulama, tomcat'inizin http'ye yanıt vermesini ve https'yi apache sunucusuna boşaltmasını sağlamaktır.
Krist van Besien

Yanıtlar:


14

Http veya https'yi https'ye proxy yaparken, apache'yi bir ssl istemcisi olarak yapılandırmanız gerekir . Apache Tomcat sunucunuzla konuştuğunda, sonuçta bir web istemcisi olarak işlev görür. Ancak Apache genellikle kutunun dışında bir SSL istemcisi olarak çalışmaz.

Öncelikle, gerçekten buna ihtiyacınız olup olmadığını, bunu neden yaptığınızı düşünmenizi öneririm. Tomcat ve Apache'nin aynı sunucuda yaşadığı yaygın uygulama, Tomcat'in sadece düz http (veya ajp) sunması ve SSL'yi Apache sunucusuna boşaltmasıdır. Genellikle apache ve tomcat sunucusu arasında SSL'ye gerek yoktur. Tomcat sunucusunda SSL olmaması size çok fazla sorun kazandıracaktır.

Tek yapmanız gereken, tomcat örneğinizdeki 8080 numaralı bağlantı noktasında bir HTTP bağlayıcısı tanımlamak ve tüm istekleri apache SSL sanal ana makinenizden yeniden yönlendirmektir:

<VirtualHost _default_:443>
SSLEngine On

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

ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

</VirtualHost>

Ancak yine de ssl proxy'sine ssl'ye ihtiyacınız olduğuna karar verirseniz, daha fazla değişiklik eklemeniz gerekir. Apache'nin SSL sunucusu ve SSL sunucusu olarak çalışabilmesi gerekir. Apache https kullanarak başka bir sunucuyla konuştuğunda, sonuçta istemci rolünü üstlenir. Bu o kadar kolay değil ve karşılaşabileceğiniz birçok sorun var. Bunu eklemeniz gerekecek:

# turn on SSL proxying.
SSLProxyEngine On

# to tell Apache where to find CA certificates to check server certificates with:
# (You can choose yourself where you put these certificates)
SSLProxyCACertificatePath /path/to/ca/certificates.

Daha sonra bu yolda, iletişim kurduğunuz sunucu tarafından kullanılan sertifikayı imzalamak için kullanılan CA sertifikasını koymanız gerekir. "Kendinden imzalı" bir sertifika kullanıyorsanız, bu dizine koymanız gerekir.

Bunu yaptıktan sonra, bu dizinde "c_rehash" komutunu çalıştırmanız gerekir. c_rehash, standart bir openssl dağıtımının bir parçasıdır. c_rehash bu dizinde karma takma adlar oluşturur. Apache'nin bunlara ihtiyacı var.

Her şeyin orada olup olmadığını test etmek için aşağıdakileri yapabilirsiniz:

 openssl s_client -CApath /path/to/ca/certificates -connect remoteserver:8443

bağlantı başarılı olursa, bir istek yazabileceğiniz bir bilgi istemi alırsınız. Sadece bir şey dene.

 GET /

ve bir şey alıp almadığınızı görün. Bu test başarılı olursa apache de çalışmalıdır.

Artık bağlantıları https sunucunuza yönlendirmek için ReWriteRule veya Proxy deyimlerini ekleyebilirsiniz.


im gerçekten bunun için yeni .. nasıl sadece ssl ve sadece http ile yönlendirme için apache kullanabilirsiniz?
SaifDeen

bana kolay geliyor .. Ben sadece ön uç için ssl istiyorum ...
SaifDeen

Tomcat için apache'yi sadece ssl frontend olarak kullanmak istiyorsanız, yapmanız gereken tek şey tomcat sunucunuzda bir http veya ajp konektörü yapılandırmak ve apache iletme istekleri yapmaktır.
Krist van Besien

Pazartesi günü deneyeceğim!
SaifDeen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.