italia / spid-saml-check

Tool di verifica implementazione SPID SAML
European Union Public License 1.2
71 stars 59 forks source link

Errore test #81: load_der_x509_certificate() missing 1 required positional argument: 'backend' #199

Closed gpantanetti closed 2 years ago

gpantanetti commented 2 years ago

Le verifiche Strict dei metadata.xml restituiscono costantemente l'errore n.81:

failure - value: ("load_der_x509_certificate() missing 1 required positional argument: 'backend'",)

Dovuto alla chiamata x509.load_der_x509_certificate(der) della libreria spid-compliant-certificate effettuata su una versione della libreria cryptography non compatibile.


Sospetto che ciò sia causato dall'installazione del pacchetto python3-pip che dipende dal pacchetto python3-cryptography.

Installando il pacchetto python3-cryptography, infatti, viene successivamente soddisfatto il requisito della libreria cryptography richiesto dall'installazione della libreria spid-sp-test (riga 39 del Dockerfile) con lo switch --upgrade.

Infatti, durante il build dell'immagine, viene restituito:

Requirement already satisfied, skipping upgrade: cryptography>=1.4 in /usr/lib/python3/dist-packages (from pysaml2>=6.5.1->spid-sp-test) (2.6.1)

Ciò comporta che nell'immagine del container spid-saml-check non sarà presente la versione 35 della libreria cryptography richiesta da spid-compliant-certificate.

Ciò è verificabile con i comandi:

> docker image build . -t spid-saml-check --no-cache
> docker container run -it --rm --entrypoint '/bin/bash' spid-saml-check -c 'pip3 list'

Package                     Version  
--------------------------- ---------
[...]
cryptography                2.6.1    
[...]
spid-compliant-certificates 0.3      
spid-sp-test                1.1.0    
[...]

Installando la libreria spid-sp-test senza lo switch --upgrade, pip3 richiede l'installazione della versione corretta di cryptography ma, sfortunatamente, l'installazione non va a buon fine restituiendo:

Building wheels for collected packages: cryptography
  Running setup.py bdist_wheel for cryptography ... error
[...]  

error: can't find Rust compiler
[...]
    This package requires Rust >=1.41.0.

Ciò perché, dalla versione 35.0.0 di cryptography, Rust è necessario per la compilazione (Rif. https://cryptography.io/en/latest/changelog/#v35-0-0).

È possibile superare il problema modificando il Dockerfile con la migrazione all'immagine node:12-bullseye-slim e l'eliminazione dello switch --upgrade dal comando pip3 per l'installazione della libreria spid-sp-test.

In questo modo, l'installazione di spid-sp-test va a buon fine con la corretta versione di cryptography richiesta da spid-compliant-certificate (v.35).

nicofari commented 2 years ago

Oggi provando a validare il metadata (generato con spid-php) su demo.spid.gov.it/validator, mi esce di nuovo l'errore: failure - value: ("load_der_x509_certificate() missing 1 required positional argument: 'backend'",)

c'entra qualcosa con il problema di questa issue?