Passaggio dati da HTTPS a HTTP per dispositivi POS

La maggior parte dei software odierni lavora in cloud e giustamente utilizzando HTTPS e relativo certificato per SSL.

Cosa succede quando si ha la necessità di stampare o comunque comunicare con un dispositivo (o in generale un servizio) che non supporta SSL ?

Diventa un’interessante problematica da risolvere! 🙂

Solitamente le stampanti POS, per questo scopo, dispongono di un web service che accetta comandi in formato Soap/XML e rispondono con degli stati nello stesso formato.

Le chiamate da HTTP a HTTPS vengono bloccate direttamente dal browser perchè identificate come contenuto non sicuro (Controllo richieste CORS).

Python è ottimo anche per lavorare come script CGI.Oltre ad avere nativamente un web server configurabile per effettuare i vari test.

Ragion per cui abbiamo creato uno script CGI che inoltra le richieste ricevute via browser dal software di gestione alla stampante.Utilizzando la libreria Request di Python.

Quindi:

Il software in cloud (in HTTPS) invia le richieste a un server NGINX configurato  con uWSGI e un certificato self-signed, in modo da girare anch’esso in HTTPS.

Sul server NGINX abbiamo creato uno script python CGI che inoltra le richieste al web service della stampante che gira in HTTP.

Nella fattispecie abbiamo installato il server NGINX su un Raspberry PI in modo da avere un dispositivo generico da mettere sulla stessa rete locale dove è installata la stampante.