italia / cie-cns-apache-docker

L'obiettivo di questo progetto è quello di fornire un template pronto all'uso che realizza un sistema di autenticazione tramite la Smart Card TS-CNS (o CNS) e la CIE (Carta d'Identità Elettronica) basato su Apache HTTP. Ognuno può poi modificare o specializzare questo progetto sulla base delle proprie esigenze Si tratta di un progetto docker per la creazione di un container che implementa un sistema di mutua autenticazione o autenticazione bilaterale SSL/TLS. Questo meccanismo di autenticazione richiede anche il certificato digitale da parte del client, certificato che in questo caso risiede all'interno della TS-CNS o della CIE.
http://bit.ly/3aJ5Gbl
MIT License
56 stars 13 forks source link

Gestire certificato mancante? #4

Closed alranel closed 5 years ago

alranel commented 5 years ago

Al momento, se non erro, questa immagine Docker avvia un webserver che richiede CIE o CNS per qualsiasi richiesta; in mancanza, l'utente otterrà un errore generico del suo browser.

Non sono sicuro che sia fattibile, ma sarebbe utile mostrare come restituire una pagina HTML custom in mancanza di certificato client: tale pagina spiegherebbe all'utente che deve posizionare la CIE o la CNS sul lettore, magari a sua volta rimandando a pagine di help, e includerebbe un tasto per riprovare l'accesso.

amusarra commented 5 years ago

Si, è una configurazione base. In ogni caso sarebbe possibile utilizzare un Custom Errors Responses sfruttando la direttiva di Apache 2.4

lucabonuccelli commented 5 years ago

se può essere utile questa strategia diversa:

RewriteCond %{SSL:SSL_CLIENT_VERIFY} !^SUCCESS$
RewriteRule .* http://landing.page.di.cortesia [L,R,QSA]
amusarra commented 5 years ago

Ciao @alranel e @lucabonuccelli

La configurazione attuale, prevede un'autenticazione molto forte, SSLVerifyClient impostato al valore require.

Gli errori SSL/TLS si verificano a livello TCP, il che significa che la connessione non arriva al punto in cui può essere gestita dalla gestione degli errori standard di Apache e reindirizzata a una pagina di errore personalizzata.

C'è un vecchio modulo Apache chiamato mod_ssl_error (https://bitbucket.org/wagnersolutions/mod-ssl-error) che fa esattamente quello che vorresti, ma richiede una compilazione e installazione manuale. F. Wagner ha reso compatibile questo modulo per la versione 2.4 di Apache.

La soluzione eventualmente da adottare, è quella d'impostare SSLVerifyClient con il valore optional
e aggiungere la configurazione suggerita da @lucabonuccelli che in caso di verifica fallita del certificato client (check sulla variabile SSL_CLIENT_VERIFY) esegua poi il redirect verso una risorsa (da configurare).

Vi aggiorno.

amusarra commented 5 years ago

Ciao @alranel e @lucabonuccelli Ho appena rilascio la versione 1.3.2 che in breve:

La nuova release è già disponibile all'indirizzo https://cns.dontesta.it

Fatemi sapere che in caso chiudo la issue.

Grazie. Antonio.

amusarra commented 5 years ago

Credo che la issue possa essere chiusa.