[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!

9 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

Ciao, nel nostro piccolo Ente è stato attivato CIE, AppIo, PagoPa e, visto che il riconoscimento per richiedere lo SPID in posta diventerà a pagamento (12 Euro) ci siamo cimentati a diventare RAO. Completata la parte amministrativa si incontrano difficoltà per quella tecnica. Qualche collega che lo ha fatto ha la possibilità di tracciare una guida (comprensibile) per la gestione dei rao pubblico e rao pubblico signer da GitH. grazie

1 Mi Piace

mi sembra sinceramente troppo macchinoso e complicato. Soprattutto per gli Enti che non hanno una struttura “tecnica” alle spalle (moltissimi degli 8000 comuni…).

Noi abbiamo seguito una scorciatoia, forse più funzionale :slight_smile:

Il nostro ufficio URP è diventato uno sportello LepidaID, può rilasciare da zero identità SPID Lepida. In pratica il cittadino entra in ufficio senza nulla e ne esce con una identità SPID attiva e funzionante.
In alternativa può iniziare la registrazione a casa e recarsi presso l’URP solo per il riconoscimento de visu (tempo = 120 secondi).

Ovviamente tutto gratuitamente.

2 Mi Piace

Ciao @Candidoni, prova a scrivere qual è il problema e proverò ad aiutarti, io ci sono riuscito :slight_smile:

@perrcla Non sapevo di questa cosa, diventare uno Sportello Lepida ha dei costi? Ovviamente immagino che tramite Lepida si possa effettuare identificazione per SPID con Lepida e non con altri…

nessun costo, a parte il “tempo” delle poche ore di formazione degli operatori.
Ovviamente si, il servizio permette di rilasciare solo identità SPID lepida. Non è però limitato alla sola identificazione, copre tutto il rilascio della identità.

E immagino che fra la procedura RAO e l’attivazione completa di LepidaID l’impegno dello sportellista sia lo stesso. Corretto?

@frantheman Con RAO l’operatore deve copiare i dati anagrafici, codice fiscale, carta di identità, inserire e-mail e cellulare. Dopo di che viene stampata una metà di password, l’altra metà viene inviata al cittadino via e-mail assieme ad un allegato.

Quell’allegato, insieme alla password completa permetterà di continuare - ad oggi - con Poste e Sielte. L’utente una volta caricato l’allegato dovrà solo confermare e-mail e cellulare con codici OTP e sarà pronto.

L’unica cosa che migliorerei sarebbe la compatibilità con gli IdP, sarebbe bello che tutti o quasi accettassero questo tipo di identificazione.

Tempo medio: 5 minuti

Grazie Pif. In pratica ho capito il senso tecnico, ma non so come fare per installare le resorce da GitHub. Non ho mai usato Docker e, di conseguenza, non so da dove partire.

ciao, porto la nostra esperienza (Comune di San Gimignano . 7800 abitanti).

Il 10 novembre abbiamo attivato lo sportello SPID - Lepida presso il nostro ufficio URP.
Ad oggi, abbiamo rilasciato 57 identità digitali.
Quasi tutti con procedura completa presso il nostro URP.
Poche (5 o 6) con pre-registrazione online e solo riconoscimento de-visu presso il nostro URP.

1 Mi Piace

si praticamente… però cerchiamo di essere “accanto” ai cittadini più in difficoltà… e magari i miei colleghi dell’URP perdono qualche minuto per mostrare loro come installare l’APP e configurarla…

1 Mi Piace

Direi che questo approccio batte il RAO con un secco 3-0

1 Mi Piace

Ciao Pierfrancesco,

Integro qui il mio modus operandi sperando che sia d’aiuto anche ad altri.

Progetto Signer
Per quanto riguarda il progetto signer l’ho deployato via container docker.
Unica modifica che mi si è resa necessaria:

cd ./rao-pubblico-signer/compose/local/sieltesign
vim Dockerfile

dopo il seguente comando all’interno del Dockerfile

RUN pip ...

inserire

USER root
RUN ["chmod", "+x", "/entrypoint"]
RUN ["chmod", "+x", "/start"]
RUN ["chmod", "+x", "/"]

credo basti solo l’ultimo comando, ma per sicurezza…
per il comando di docker run è quello mostrato su guida Sielte su Github.

Progetto Rao Pubblico

In primis, la cartella dove si trova il Dockerfile /django esiste solamente sotto al branch dependabot/pip/django-2.2.24; in master si chiama /rao.
Infine, nel tuo docker run manca l’esposizione della porta -p 8000:8000 come da guida Sielte su Github.
Dare il comando chmod +x per il progetto rao-pubblico non si è reso necessario.

Il mio deploy, che ho eseguito per test su VM Ubuntu ultima LTS, ha avuto qualche problema col rao-pubblico: non riusciva a risolvere i mirror deb.debian/…/ dandomi di continuo un Connection Timed Out sullo scaricamento delle dipendenze. Però come informatica insegna, ho spento e riaccesso l’intera VM e macchina e tutto ha funzionato :crazy_face: