menu di navigazione del network

[TUTORIAL] Set-up Appliance RAO per Erogazione SPID

Ciao a tutti,
condivido con voi la mia esperienza per il set-up dell’ambiente necessario per diventare RAO pubblico.

Consiglio l’uso di una VPS in Cloud, nel mio caso ho usato Ubuntu 20.04 LTS, altro requisito necessario è una casella e-mail dal quale far inviare le notifiche ai cittadini.

  1. Richiedere il Sigillo ad AgID

Per ottenere un ambiente funzionante occorre inviare una richiesta ad AgID via PEC.
a. Generare un CSR (molto utile questo tool)
b. Calcolarne l’hash in SHA1
c. Compilare il documento di richiesta ed inviarlo via PEC ad AgID - ricordarsi di allegare anche il CSR.

  1. Preparare la VPS

La procedura si basa sull’uso di due componenti open-source: sono rao-pubblico e rao-pubblico-signer. Il primo consiste in un webserver ed il secondo nel vero e proprio componente di firma.

Avendo a disposizione una VPS con Ubuntu, aggiorniamo il tutto con apt update ed apt upgrade prima di partire. Consiglio vivamente l’uso di UFW per ‘blindare’ il VPS al solo IP statico dell’Ente, piuttosto che l’uso di una VPN.

Partiamo dal rao-pubblico-signer, che necessita di un virutal environment in Python.

Creiamo il venv con il comando python -m venv venv-rao-signer, entriamo nel venv con cd venv-rao-signer, e abilitiamo l’environment appena creato con source bin/activate.

Cloniamo la repo all’interno dell’environment con git clone https://github.com/Sielte/rao-pubblico-signer, successivamente entriamoci con cd rao-pubblico-signer.

Installiamo i requisiti con pip install -r requirements.txt.

Effettuiamo le migrazioni:

python3 manage.py makemigrations 
python3 manage.py makemigrations api
python3 manage.py migrate
python3 manage.py migrate api

Siamo pronti, ora non ci resta che avviare il server con il seguente comando.

python3 manage.py runserver 9000

Il server si attiverà sulla porta 9000 TCP ed accetterà richieste solo da localhost. Se, per scopi di test, volessimo permettergli di accettare richieste da tutti gli IP, anteporre 0.0.0.0 al 9000.

Concentriamoci sul secondo componente, andiamo nella home directory semplicemente digitando cd.

Cloniamo l’altra repository con git clone https://github.com/Sielte/rao-pubblico, ed entriamoci con cd rao-pubblico.

Ora, effettuiamo il building della immagine Docker con docker build --no-cache -f "./compose/local/django/Dockerfile" -t "rao-app:latest" . , e creiamo il volume in cui il container andrà ad immagazzinare i dati con docker volume create "rao-data" &> /dev/null || true.

Non ci resta che evocare il comando docker run, invito a far riferimento al readme su Github, tuttavia riporto qui il comando da me usato, a mio avviso un buon compromesso tra semplicità d’uso e sicurezza.

docker run -d --name "rao" -e SIGN_URL="http://127.0.0.1:9000/v2/" -e BASE_URL="http://rao.comune.citta.prov.it:8000/" -e DATABASE_NAME="/data/rao-db.sqlite3" -e MAIL_LOG_LEVEL="ERROR" -e PORTAL_LOG_LEVEL="INFO" -e AGENCY_LOG_LEVEL="INFO" -e RAO_NAME="Comune di Test" --mount type=volume,source="rao-data",target="/data" --restart unless-stopped --network host "rao-app:latest"  "/start"

Si premette che rao.comune.citta.prov.it abbia un record DNS tale che punti verso l’IP pubblico del VPS, rispetto i parametri indicati nel Github, io ho aggiunto:
--restart unless-stopped = riavvia il container in caso di crash
--network host = il network utilizzato dal cotainer, al contrario di usare una propria subnet interna all’host, utilizza la configurazione di rete alla quale l’host appartiene, il che permette di risparmiarsi un livello in più di astrazione e quindi complessità, di cui a mio avviso possiamo fare a meno

Fatto ciò, avremo il signer in esecuzione sulla porta 9000 e il docker in esecuzione sulla porta 8000.

Dirigiamoci con un browser all’IP/dominio del VPS alla porta 8000 e dovremmo entrare nel set-up dell’istanza.

Da qui in poi possiamo far riferimento alle istruzioni contenute nella repository rao-pubblico.

IMPORTANTE
Arriveremo al punto in cui l’admin dovrà cambiare (=creare) il proprio PIN, e ci verrà chiesto di inserire il vecchio PIN, che non avremo.

La creazione del PIN dell’admin, deve essere fatta manualmente tramite una chiamata curl.

Rechiamoci quindi in ssh sul VPS, e con il rao-pubblico-signer attivo digitiamo curl -X POST -F "username=CODFISCALEADMIN" -F "entity=CODCATASTALE" http://127.0.0.1:9000/v2/api/init, dove CODFISCALEADMIN è il codice fiscale dell’amministratore appena indicato, e CODCATASTALE rappresenta appunto il codice catastale.

Se tutto va bene, riceveremo in risposta il PIN provvisorio, da usare come vecchio PIN al fine di impostare quello di nostra scelta.

  1. Verificare le identità

Adesso con l’ausilio delle istruzioni possiamo creare l’account dell’operatore che materialmente si occuperà di verificare le identità.

Questa guida è stata testata da me, ma ogni suggerimento o miglioria è assolutamente ben accetta.
Spero di aver portato un buon contributo per chiunque voglia cimentarsi nella creazione dell’ambiente RAO per il proprio ente! :slight_smile:

Buona giornata!

6 Mi Piace

Grazie della condivisione.
Hai un track record di quante spid sono state rilasciate mensilmente dal tuo ente?
Andrea

Ciao @Andrea_Tironi1,
l’ambiente è in piedi da meno di una settimana e ho testato solo su una persona per ora.

Presto faremo uscire un Comunicato Stampa e partiremo, quindi non ho ancora nessuna statistica.

Buona giornata.

1 Mi Piace

Mi spaventa la gestione della chiave privata. Come file su una VPS in cloud? :cold_face:

Questa attività di diventare RAO, cioè identificare l’utente per far si che poi possa andare a chiedere lo SPID ad ISP non mi convince che possa essere una cosa utile. Se l’utente è in grado di utilizzare online l’identificazione ottenuta presso il Comune dovrebbe essere in grado di fare tutta la procedura compresa l’identifcazione che l’ISP prevede. Se invece andasse alle Poste non capisco perchè deve fare identificazione in Comune e poi andare alle Poste, fa molto prima a fare tutto alle Poste.
Molto diversa sarebbe la situazione se i Comuni fossero ISP, visto il notevole traffico di cittadini agli sportelli anarafici dei singoli Enti.

Buongiorno @sbruscoli,
posso concordare con te sul fatto di “perché andare in Comune e poi da Poste quando puoi fare tutto direttamente da Poste”, tuttavia sia nel mio Comune, che in un altro con cui mi sono confrontato, c’è l’Ufficio Postale letteralmente attaccato al Comune.

Mi è stato detto che nonostante questo, comunque il Comune - dal quale mi sono informato prima di partire - riceve molte richieste di identificazione, per cui sta di fatto che il servizio funziona.

Nel mio comune invece siamo appena usciti sui giornali, quindi non ho ancora statistiche.

ciao

quando avrai qualche statistica se puoi mi interessa di sapere

a) dimensione comune
b) richieste / mese
c) se hai qualche dettaglio richieste/mese (es. età) mi interessa

grazie

1 Mi Piace

Buon pomeriggio,
Vista la difficoltà riscontrata nel configurare correttamente RAO Pubblico e SignServer, abbiamo deciso di aggiornare i relativi repository come segue:

  • Repos. RAO Pubblico:
    • upload del file docker-compose.yaml per avviare RAO e SignServer;
    • aggiornamento del readme con le istruzioni per l’installazione via docker-compose;
  • Repos. SignServer:
    • upload del Dockerfile e dei file start ed entrypoint;
    • aggiornamento del readme con le istruzioni per l’installazione via Dockerfile e per l’attivazione del Security Officer.

Grazie mille per il vostro contributo!
Gianluca Di Franco

1 Mi Piace

Buongiorno,
io li ho installati entrambi come applicazioni Django, visto che nel nostro ente Django viene usato in maniera diffusa per molte funzioni interne.
Abbiamo testato l’attivazione con 2 richieste, una su Poste e l’altra su Sielte ed entrambe sono andate a buon fine.
Nel caso di Poste, se ci sono problemi con l’attivazione non fornisce informazioni dettagliate sul fallimento. Nel nostra caso dipendeva (almeno abbiamo dedotto che potrebbe essere stata questa la causa) dal fatto che il numero di cellulare fornito era già usato in un altro account di poste id.
Su Sielte non ha dato problemi.
Ancora non lo attiviamo ufficialmente, lo faremo a giorni e tra qualche settimana potremmo aggiornavi sulle statistiche, ma visto quello che sta succedendo con i referendum, prevedo una nuova impennata di richieste di SPID.
Grazie a Sielte che ha realizzato questa piattaforma e buon lavoro a tutti.

1 Mi Piace