«

»

Giu 20

Apache 2: integrazione tra MirthConnect e end point dei webservices INPS

Sto lavorando all’integrazione tra due enti pubblici per la notifica punto – punto di avvio di una procedura. Qui di seguito riassumo un how to che mi è servito a configurare Apache e Mirth in modo tale che quest’ultimo, girando in locale, scriva i risultati di una interrogazione del database su un end-point pubblico.

Il problema che risolve è: raggiungere l’end-point con il protocollo HTTPS quando, nella versione Open, Mirth ha soltanto un canale di scrittura su HTTP.

Realizzo questo funzionamento usando i reverse Proxy di Apache.

Forward e Reverse Proxy

Apache può essere configurato sia in modalità proxy diretta (o in avanti) che inversa (o all’indietro). Per leggere l’articolo completo, fare riferimento al sito Apache.

Forward Proxy

Un proxy diretto (ordinario, o in avanti) è un server intermedio che si trova tra il client e il server di origine. Al fine di ottenere contenuti dal server di origine, il client invia una richiesta al proxy server usando la denominazione di origine come obiettivo e il proxy richiede poi il contenuto dal server di origine e lo restituisce al client. Il client deve essere appositamente configurato per utilizzare il proxy in avanti per accedere ad altri siti.

Un utilizzo tipico di un proxy in avanti è quello di fornire accesso a Internet a client interni che altrimenti sarebbero individualmente bloccati da un firewall.

Il proxy in avanti può anche utilizzare la cache (grazie al modulo aggiuntivo di Apache mod_cache) per ridurre l’utilizzo della rete. Il proxy in avanti si attiva usando la direttiva ProxyRequests. Poiché i proxy diretti consentono ai client di accedere a siti arbitrari sul server nascondendo la loro vera origine[1], è essenziale che voi assicuriate il vostro server in modo che solo i client autorizzati possano accedere al proxy prima di effettuare un proxy in avanti.

Reverse Proxy

Un reverse proxy, al contrario, appare al client come un web server normale. Nessuna configurazione speciale è necessaria sul client. Il client effettua richieste ordinarie per i contenuti in spazio-nomi del reverse proxy. Il reverse proxy decide dove inviare tali richieste, e restituisce il contenuto come se fosse l’origine. Un utilizzo tipico di un proxy inverso è quello di fornire accesso a Internet agli utenti di un server che si trova dietro un firewall.

Un reverse proxy può essere utilizzato anche per bilanciare il carico tra più server back-end, o per fornire la cache per un server di back-end più lento.

Semplici Esempi

Gli esempi che seguono rappresentano solo l’idea di fondo per aiutarvi a partire. Leggete la documentazione per le singole direttive. Inoltre, se volete usare la cache, consultate la documentazione di mod_cache.

Forward Proxy

  ProxyRequests On
  ProxyVia On

  Order deny,allow
  Deny from all
  Allow from internal.example.com

Reverse Proxy

ProxyRequests Off
Order deny,allow
Allow from all      

ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar

Tentativi per capire

Ho abilitato i moduli per il ReverseProxy; per fare ciò si aggiunge ai mods-enabled i moduli che si desiderano:

root@jsbach:/etc/apache2# cd mods-enabled/
root@jsbach:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy.conf .
root@jsbach:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy.load .

Ora, avevo la possibilità di intervenire nel file proxy.load per configurare, ma l’ho fatto in conf.d; infatti, in /etc/apache2/apache2.conf c’è la riga:

# Include generic snippets of statements
Include conf.d/

che include nel file di configurazione tutti i file sotto conf.d. Io ho creato un file rproxy.conf:

# prova reverse proxy
Order deny,allow    Allow from all
ProxyPass /inps https://blabla.it/TCW/services/InvioCertificato
ProxyPassReverse /inps https://blabla.it/TCW/services/InvioCertificato

Occorre riavviare Apache:

# apache2ctl configtest
Syntax OK
# apache2ctl restart

Problema

Richiamando la pagina http://jsbach/inps ho Errore 500. Nel file /var/log/apache2/error.log si legge

[Mon Jun 20 16:53:39 2011] [warn] proxy: No protocol handler was valid for the URL /inps. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

Non c’è un protocollo disponibile per trattare la richiesta. In effetti, Apache deve reindirizzare la richiesta verso una connessione HTTPS. A questo punto è sufficiente abilitare il motore SSL; quindi, riassumendo, il file di configurazione è il seguente:

# prova reverse proxy
Order deny,allow
Allow from all
SSLProxyEngine On
ProxyPass /inps https://blabla.it/TCW/services/InvioCertificato
ProxyPassReverse /inps https://blabla.it/TCW/services/InvioCertificato

Il risultato è illustrato in figura:

Proxy inverso

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>