italia / spid-metadata-signer

Tool per la firma del metadata SAML SPID
MIT License
21 stars 10 forks source link
spid

SPID Metadata Signer

Lo script permette di firmare un metadata SAML utilizzando XmlSecTool.

Requisiti

Per utilizzare lo script è necessario avere:

Per creare una chiave (con password) e un certificato:

openssl req -x509 -sha256 -days 365 -newkey rsa:2048 -keyout nome-chiave.key -out nome-certificato.crt

Nota bene: un certificato generato con questo comando avrà durata di 1 anno

Per rimuovere la password alla chiave:

openssl rsa -in your.encrypted.key -out your.key

Per aggiungere la password alla chiave:

openssl rsa -des3 -in your.key -out your.encrypted.key

Nota: lo script effettua un controllo dei requisiti software e parametri

Utilizzo

Procedura di firma attraverso script

./spidMetadataSigner.sh

I parametri seguenti possono essere inseriti in un file da cui leggere i valori predefiniti ad ogni esecuzione, un esempio è riportato in config.sample. Il file di impostazioni deve essere chiamato .config, nella directory principale del progetto.

Verranno richiesti i seguenti parametri:

Alla fine della procedura il metadata firmato sarà caricato nella cartella "metadata/metadata-out"

Procedura di firma manuale

Lo script automatizza e semplifica il comando di firma metadata tramite XmlSecTool:

Scaricare XmlSecTool:

Impostare JAVA_HOME

export JAVA_HOME=/path/java/home

Per conoscere il path per JAVA_HOME (Java deve essere installato sul sistema):
Linux: echo $(dirname $(dirname $(readlink -f $(which javac))))
MacOS: echo $(/usr/libexec/java_home)

Eseguire XmlSecTool

xmlsectool.sh --sign --referenceIdAttributeName ID --inFile "metadata-non-firmato.xml" --outFile "metadata-firmato.xml" --digest SHA-256 --signatureAlgorithm http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 --key "certificato.key" --keyPassword "password" --certificate "certificato.crt

Specificare --keyPassword "password" solo se la chiave è con password

Note

Si raccomanda di utilizzare i file di esempio solo per test.