Posts tagged ‘tomcat’

Xwiki su debian non funziona (blank page)

Mi hanno chiesto di installare un wiki al lavoro e tra tutto lo scibile umano mi è toccato una schifezza fatta in java:

QUESTO.

Sic, con tutta la roba precotta che c’era in giro proprio un bubbone che vuole tomcat mi doveva toccare…

Le istruzioni sono un poco stringate, ma trovo un’ottima guida per la vecchia debian stabile (etch) che si adatta pefettamente all’attuale stabile

La guida è QUI

che funziona alla grande, salvo che quando lancio la pagina di xwiki

http://MioIp:8180/xwiki

il browser mi rimane vuoto

cerco dei log e trovo che in /var/lib/tomcat5.5/temp/xwiki.log è riportato un errore che recita piu’ o meno:

/usr/lib/jvm/java-1.5.0-sun-1.5.0.17/jre/lib/i386/libawt.so: libmlib_image.so: cannot open shared object file:

googlando un poco scopro che è un componente che stà dove deve stare e la cosa si risolve semplicemente con un:

ln -s /usr/lib/jvm/java-1.5.0-sun/jre/lib/i386/libmlib_image.so /usr/lib
ldconfig

Potenza della rete.

Reverse proxy con cifratura con Mod_JK

Abbiamo sulla nostra lan un web service scritto in Java (che gira su Tomcat) che non può essere cifrato in https direttamente da TOMCAT per vari motivi.

Quindi, fino a che detto web service lo si deve usare in una lan sicura, non ci sono problemi.

Il problema esce al momento in cui lo si deve esporre su internet e la connessione deve essere cifrata per riservatezza.

La cosa più semplice da fare è esporre su internet qualche cosa di cifrabile e poi forwardare le richieste al sito in questione.

A causa di alcune applet java che non si fanno imbrogliare il Mod_proxy di Apache non funziona, quindi, su suggerimento dell’assistenza del web service di cui sopra ho usato Mod_jk che invece riesce ad “incapsulare” con successo le malefiche applet (grazie Emiliano).

I passi sono pochi e veloci:

Si deve installare per prima cosa una Debian stabile evitando il per noi inutile “Ambiente Desktop” e lasciando “Sistema standard”, questo perchè la web application gira su Windows ed installare Apache e le sue mod su windows 2003 e poi esporlo non mi sembrava il caso.

ATTENZIONE: è fondamentale che durante il setup, quando vengono chiesti il nome ed il domino della macchina, si indichi quello che poi sara’ pubblicato su internet.

Per esempio se il sito sarà esposto come https://mioserver.miosito.it si deve impostare come nome “mioserver” e come domino “miosito.it

Questo perchè quando verrà generato il certificato necessario alla cifratura, dentro ci sarà è scritto il nome della macchina e se questo non corrisponde al sito si avranno una marea di fastidiose warning.

Diamo per scontato che sia configurata correttamente la rete, gli indirizzi, Debian sia aggiornata con un dist-upgrade etc etc.

Per prima cosa si devono installare ssh e apache con:

 apt-get install apache2 ssh

Successivamente si deve abilitare il mod_ssl (che arriva di serie con apache) con

 a2enmod ssl

Quindi si generi il certificato per il sito in ssl

 openssl req $@ -new -x509 -days 3650 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

il 3650 indica che il certificato sarà valido 10 anni (impostatelo a quanto credete giusto), durante il setup vengono poste delle domande puramente descrittive sul dove e sul come.

Successivamente si deve installare il mod_jk

 apt-get install libapache2-mod-jk

Quindi si deve creare il file di configurazione in

 /etc/apache2/mods-enabled/jk.conf

che deve contenere

 # The location where mod_jk will find the workers definitions
 JkWorkersFile /etc/apache2/workers.properties

e si crei il file sopra indicato di conseguenza

 /etc/apache2/workers.properties

contenente:

 #
 # Define 1 real worker using ajp13
 worker.list=worker1
 #
 # Set properties for worker1 (ajp13)
 worker.worker1.type=ajp13
 worker.worker1.host=10.239.1.184 <- ip del server nella lan/dmz, se installato nello stesso pc si può mettere localhost
 worker.worker1.port=8009

Si elimini il sito in chiaro dai sites-enabled si  aggiunga quello over ssl

 cd /etc/apache2/sites-enabled
 rm 000-default
 ln -s /etc/apache2/sites-available/default-ssl 000-default-ssl

si aggiunge in 000-defaults-ssl la riga indicata dalla freccia

 <IfModule mod_ssl.c>
 <VirtualHost _default_:443>
     ServerAdmin webmaster@localhost
     JkMount /* worker1            <---------- QUESTA
     DocumentRoot /var/www/
     <Directory />
         Options FollowSymLinks
         AllowOverride None
     </Directory>

poi si attiva la porta 443 e si tolga la 80 dal file /etc/apache2/ports.conf facendolo diventare pressapoco cosi:

 NameVirtualHost *:443
 ##Listen 80
 <IfModule mod_ssl.c>
     # SSL name based virtual hosts are not yet supported, therefore no
     # NameVirtualHost statement here
     Listen 443
 </IfModule>

quindi si riavvia apache con il solito

 /etc/init.d/apache2 restart

ed è finito.

Buon reversproxing sicuro :-)