Skip to content

Instantly share code, notes, and snippets.

@well-it-wasnt-me
Created March 2, 2024 15:35
Show Gist options
  • Save well-it-wasnt-me/8697acc133986f8904b5f2228f4e6ce5 to your computer and use it in GitHub Desktop.
Save well-it-wasnt-me/8697acc133986f8904b5f2228f4e6ce5 to your computer and use it in GitHub Desktop.
TUTORIAL: SDI, FatturaPA ed Agenzia delle Entrate. Guida pratica (e funzionante) su come usare e gestire i certificati

Pre-Requirements

  • La chiave usata per firmare (server.key)

Note: Se avete seguito la guida fornita da fatturapa avete generato la chiave con openssl. Il formato è PKCS-8

Step 1 - File necessari

  • Andare sul sito FatturaPA
  • Cliccare su "Interoperability Test"
  • Cliccare su "Download test files"
  • Scaricare KitDiTest.zip e Certificato Client e Server
  • ATTENZIONE ! Certificato Client e Server avranno lo stesso nome al download, quindi salvate i file con un nome appropriato (es. server-SDI-PARTITAIVA.cer e client-SDI-PARTITAIVA.cer)
  • Controlliamo bontà dei certificati scaricati
$ openssl x509 -in server-SDI-PARTITAIVA.cer -text -noout

Importante: Se il comando qui sopra ritorna un errore qualunque provate a riscaricare il certificato e ripetere. Se persiste, contattare SOGEI.

  • Aprite il certificato server-SDI-PARTITAIVA.cer con un editor di testo qualunque, se ha caratteri incomprensibili (simboli vari) allora va convertito. Ecco come:
$ openssl x509 -inform der -in server-SDI-PARTITAIVA.cer -out server-SDI-PARTITAIVA.pem

Da notare: Abbiamo creato un file .pem

  • Ora, di nuovo, apriamo il file server-SDI-PARTITAIVA.pem ed assicuriamoci di 2 cose fondamentali:
    1. Contenga le seguenti stringhe: BEGIN CERTIFICATE ed END CERTIFICATE
    2. Che il file alla fine abbia 1 linea vuota

Step 2 - Generazione nuovo server-SDI-PARTITAIVA.pem finale

$ cat server-key-pkcs8.key server-SDI-PARTITAIVA.pem > final-server-SDI-09701431216.pem
  • Anche qui, controllare questi 2 requisiti essenziali:
    • Aprire il file .pem finale con un editor di testo qualunque ed assicurati di 2 cose FONDAMENTALI:
        1. Che al suo interno siano presenti ---- BEGIN CERTIFICATE --- , ---- END CERTIFICATE ---- , -----PRIVATE KEY----- , -----END PRIVATE KEY-----
          1. Che il file contenga 1 linea vuota alla fine

Step 3 - Creazione *-ca.crt

File richiesti

  • Ricordate il file scaricato di nome 'KitDiTest' ? Bene, scompattatelo e mettetelo da qualche parte
  • Qui abbiamo bisogno di:
    • caentrate.cer
      • CAEntratetest.cer
      • testservizi.fatturapa.it.cer

ATTENZIONE: Anche qui probabilmente il formato effettivo dei .cer protrebbe non essere cer ma der. Quindi eseguiti i punti descritti nello Step 1

$ cat caentrate.cer CAEntratetest.cer testservizi.fatturapa.it.cer > server-SDI-PARTITAIVA-ca.crt

Conclusioni

Finalmente avete tutto quello che vi serve per configurare il vostro server per comunicare con l'agenzia delle entrate senza problemi.

Elenco file finali da usare

  • server-chiave.key (quella che avete inviato all'Agenzia)
  • server-SDI-PARTITAIVA.pem
  • server-SDI-PARTITAIVA-ca.crt

Note

Installazione Certificato

Prima che andate avanti....

  • SOGEI non ha abilitato lo SNI, di conseguenza se installate i certificati che abbiamo creato prima su un SOTTO DOMINIO i test e produzione falliranno. Nonostante risponda il certificato dell'Agenzia dell'Entrate. Quindi i certificati vanno installati sul DOMINIO PRINCIPALE
  • Attenzione ! I Certificati in questione NON RISULTERANNO MAI "VALIDI" agli occhi di un browser (Agenzie delle Entrate non è un Authority alla fine). Quindi evitate di usare il vostro dominio e server principale. Fatene uno dedicato. Vi conviene. (ci sono dei workaround ma sono mal di testa e troppo lunghi da spiegare/scrivere

Ringraziamenti

  • Un bel grazie a Stefano Petrone per aver fatto da cavia e risolto il *-ca.cer

Autore

D'Angelo Antonio - https://github.com/well-it-wasnt-me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment