Saya mencoba men-setup Apache dengan SSl dan proksi permintaan SSL ke instance tomcat saya. Saya pikir saya membuat SSL berfungsi tetapi masih ada kesalahan yang muncul:
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 redirect ke 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>
Konektor 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
sumber
sumber
Jawaban:
Saat proksi http atau https ke https Anda harus mengonfigurasi apache sebagai klien ssl . Bagaimanapun, ketika apache berbicara dengan server Tomcat Anda, ia berfungsi sebagai klien web. Namun Apache biasanya tidak akan berfungsi sebagai klien SSL di luar kotak.
Pertama-tama saya menyarankan agar Anda mempertimbangkan terlebih dahulu jika Anda benar-benar membutuhkan ini, mengapa Anda melakukan ini. Praktik umum ketika Tomcat dan Apache tinggal di server yang sama adalah memiliki Tomcat hanya melayani http polos (atau ajp) dan membongkar ssl ke server Apache. Biasanya tidak perlu memiliki ssl antara apache dan server tomcat. Tidak memiliki ssl di server kucing jantan akan menyelamatkan Anda dari banyak masalah.
Yang perlu Anda lakukan hanyalah menentukan konektor HTTP pada port 8080 dalam instance kucing jantan Anda, dan mengalihkan semua permintaan dari dalam host virtual SSL apache Anda:
Tetapi jika Anda masih memutuskan Anda memang perlu ssl ke ssl proxy, Anda perlu menambahkan lebih banyak perubahan. Apache harus dapat berfungsi sebagai klien SSL, serta server SSL. Ketika Apache berbicara ke server lain menggunakan https itu adalah setelah semua mengambil peran klien. Ini tidak semudah itu, dan ada banyak masalah yang bisa Anda hadapi. Anda perlu menambahkan ini:
Kemudian di jalur ini Anda harus meletakkan sertifikat CA yang digunakan untuk menandatangani sertifikat yang digunakan oleh server yang Anda ajak berkomunikasi. Jika Anda menggunakan sertifikat "ditandatangani sendiri", Anda harus memasukkannya ke dalam dir ini.
Setelah Anda selesai melakukannya, Anda perlu menjalankan "c_rehash" di direktori itu. c_rehash adalah bagian dari distribusi openssl standar. c_rehash membuat alias hash dalam dir ini. Apache membutuhkan ini.
Untuk menguji apakah semuanya ada, Anda dapat melakukan hal berikut:
jika koneksi berhasil, Anda akan mendapatkan prompt tempat Anda dapat mengetik permintaan. Coba saja sesuatu.
dan lihat apakah Anda mendapatkan sesuatu. Jika tes ini berhasil, apache harus bekerja juga.
Anda sekarang dapat menambahkan pernyataan ReWriteRule atau Proxy untuk meneruskan koneksi ke server https Anda.
sumber