Richiesta aiuto cns (carta nazionale dei servizi)

Buongiorno a tutti, grazie a chi potrà essere di aiuto.

Partiamo dai dati fondamentali:
sistema Debian 11.9 con kernel 5.10 su processore AMD;
browser Firefox 102.6;
lettore di SC della Trust.

Tre anni fa ho preso dalla camera di commercio la CNS, installata sul nuovo sistema con qualche tribolazione, ma poi trovando il suggerimento giusto (non ricordo dove e cosa dicesse) il sistema ha funzionato bene per l’autenticazione sui siti degli enti pubblici.

Ad inizio agosto il certificato va in scadenza e quindi vado in CCIAA a rinnovarlo (dalle macchine Linux non si può fare online :frowning: )

Rinnovato il certificato non è più stato possibile fare l’autenticazione.
nel cercare aiuto da chi sarebbe preposto ho scoperto che:
Il programma di firma doveva essere cambiato (fatto);
garantiscono il loro sw solo per UBUNTU 22 (quindi chiudono la telefonata di assistenza perchè non sei supportato :frowning: ).

Con il nuovo programma di firma (firma4ng) i file possono essere correttamente firmati: quindi driver del lettore OK.

Ho ripercorso tutti i passaggi, reinstallato quello che potevo, fatto prove varie, ma ad oggi non ho possibilità di autenticarmi. Quando ci provo il lettore lampeggia, il browser chiede il codice, ma poi dice che non va bene; certificato scaduto, certificato ritirato, lettore mal collegato…

Quando tento di importare nel browser i certificati sembra farlo, ma se poi vado a verificare quelli presenti (categoria personali) chiede il codice della carta, sembra leggere, ma non appare nulla.

Ho l’impressione che il problema sia di quelli banali ed ovvi, ma proprio per questo invisibili. Quelli che dopo aver risolto ti dici: ma come ho fatto a non pensarci?

Qualcuno sa suggerirmi la soluzione o anche solo dei test che siano significativi per venire a capo del problema?
Per ora grazie ancora in anticipo

MM

Mhm hai provato a fare l’autenticazione usando OpenSC(software libero che supporta la smartcard, ma non il certificato di firma qualificato, vedi Can't see the signing certificate on Italian CNS · Issue #2782 · OpenSC/OpenSC · GitHub) invece di bit4id?

La tessera è sempre la stessa? Il certificato presente è quello nuovo o quello vecchio? Pensavo che una volta scaduto il certificato si dovesse cambiare tessera.

PS: Ho avuto una pessima esperienza con infocamere. Ho provato a chiamare più volte la dirigenza che mi ha sempre ghostato.

In precedenza usavo come driver per la smartcard opensc-pkcs11.so, funzionava e forse il consiglio che mi aveva tolto dai problemi era proprio stato quello di usare openSC. Ora ho provato sia con lui (che già era lì) sia con libbit4xpki.so. Se vado a vedere cosa vede firefox ottengo:
questo con opensc


e questo con bit4id

Non so più cosa provare.
Non conosco abbastanza la struttura del sistema smart-card - certificati da capire cosa possa aver modificato il solo rinnovo del certificato. La carta è sempre la stessa, e per altro come detto con la firma funziona.
Sembra che il browser non riesca a caricare il certificato, infatti sia con opensc che con bit4id quando vado a vedere i certificati caricati (con card inserita ovviamente) viene chiesto il pin ma nessun certificato appare. Ho provato a verificare con la tessera sanitaria di mia madre e con quella tutto funziona ed il certificato c’è.

:exploding_head:

Hai scritto che utilizzi un lettore di SC della Trust… puoi dirci nel dettaglio che modello è?
Io, ad es., ho un uTrust 2700 R

Di riferimenti ad un modello sopra non ne vedo. lsusb riporta:

Realtek Semiconductor Corp. Mass Storage Device

ed individua il device come

0bda:0161

invece se guardo sul browser viene identificato come su indicato: MSI StarReader SMART. Però lo StarReader è completamente diverso dal mio.

Direi che i problemi non possono essere legati al lettore, sia perchè firmo i documenti con la mia CNS, sia perchè mi posso identificare se uso la TS-CNS di mia madre.

Domani andrò in CCIAA e proverò a vedere se riesco a fare l’identificazione sui loro sistemi, che dovrebbero essere assolutamente idonei. E’ una prova cretina, ma è l’unico modo per escludere anomalie nella carta e non rischiare di perdere del tempo inutile. Se da loro funzionerà ripartirò a fare prove e verifiche, oltre a studiare bene il funzionamento dei certificati.

Comunque nell’aspetto è così:

Cosa ci sia dentro non lo so… non l’ho ancora aperto :grinning:

Lancia il comando pkcs11-tool --module /usr/lib/bit4id/libbit4xpki.so -O e pkcs11-tool -O, ovviamente con la smart card inserita (e censurando le info scomode, eventualmente con --login per inserire il pin).

Prova anche a fare e a dirci l’output(sostituendo IDCERTIFICATO con l’id del certificato detto da opensc, tipo CNS0 credo):
pkcs11-tool --read-object --id IDCERTIFICATO --type cert --output-file cert.der
openssl x509 -in cert.der -inform der -noout -text

Quando sei andata alla camera del commercio cosa hai esattamente fatto?

Non credo sia rilevante il lettore in uso.

mauro@master:~$ pkcs11-tool --module /usr/lib/bit4id/libbit4xpki.so -O --login
Using slot 0 with a present token (0x0)
Logging in to "CNS".
Please enter User PIN: 
Data object 1001
  label:          'PDATA'
  application:    'PDATA'
  app_id:         2.0.68.65.84.65
  flags:           modifiable
Public Key Object; RSA 1024 bits
  label:      CNS0
  ID:         *******
  Usage:      encrypt, verify
  Access:     none
Private Key Object; RSA 
  label:      CNS0
  ID:         *******
  Usage:      decrypt, sign
  Access:     sensitive, always sensitive, never extractable

Per il secondo comando invece dice:

mauro@master:~$ pkcs11-tool --read-object --id ****** --type cert --output-file cert.der
Using slot 0 with a present token (0x0)
error: object not found
Aborting.

In CCIAA hanno preso la carta, messa nel loro lettore e fatto la loro procedura di rinnovo dei certificati. Per fare questo hanno avuto ovviamente bisogno di usare il PIN.
Alla fine mi hanno restituito la carta e preso un po’ di soldi :slight_smile:
Ora vado a vedere se da loro funziona.

Ti sei dimenticato l’output usando opensc.

Il secondo comando fa riferimento all’output con opensc, infatti per questo non ti ha trovato l’oggetto.

Dunque… il comando che ho dato è quello che mi avevi suggerito, ma poi nel copia incolla sul forum in pezzo è rimasto tagliato.

Ho anche rifatto una verifica per sicurezza, stesso risultato.
Nel frattempo sono andato in CCIAA e la smart card funziona.
La prova è stata fatta con windows e edge come browser, però va, quindi insisto e dovrà funzionare.

Per sopravvivere nel frattempo ho abilitato la TS-CNS… almeno so chi sono nel frattempo.

Vabbè, prova con pkcs11-tool -O , e poi di nuovo con pkcs11-tool --read-object --id IDCERTIFICATO --type cert --output-file cert.der e openssl x509 -in cert.der -inform der -noout -text

mauro@master:~$ pkcs11-tool -O
Using slot 0 with a present token (0x0)
Data object 328319872
label: ‘EF_DatiProcessore’
application: ‘EF_DatiProcessore’
app_id:
flags:
Data object 328319968
label: ‘EF_IDCarta’
application: ‘EF_IDCarta’
app_id:
flags:
Data object 328320064
label: ‘EF_DatiPersonali’
application: ‘EF_DatiPersonali’
app_id:
flags:
Data object 328320288
label: ‘EF_DatiPersonaliAggiuntivi’
application: ‘EF_DatiPersonaliAggiuntivi’
app_id:
flags:
Data object 328320384
label: ‘EF_MemoriaResidua’
application: ‘EF_MemoriaResidua’
app_id:
flags:
Data object 328320480
label: ‘EF_ServiziInstallati’
application: ‘EF_ServiziInstallati’
app_id:
flags:
Data object 328320576
label: ‘EF_INST_FILE’
application: ‘EF_INST_FILE’
app_id:
flags:
Data object 328320672
label: ‘EF_CardStatus’
application: ‘EF_CardStatus’
app_id:
flags:
Data object 328320768
label: ‘EF_GDO’
application: ‘EF_GDO’
app_id:
flags:
Data object 328320864
label: ‘EF_RootInstFile’
application: ‘EF_RootInstFile’
app_id:
flags:

mauro@master:~$ pkcs11-tool --read-object --id ******** --type cert --output-file cert.der
Using slot 0 with a present token (0x0)
error: object not found
Aborting.

Non ho neanche provato il comando successivo, se non genera il file cert.der non si può farci su nulla :slight_smile:

Sembra che OpenSC non trovi neppure il certificato, il quale è strano perché a me funziona correttamente. A me esce così(sempre tessera Infocamere/camera del commercio bergamo, serie 7420*)

[amreo@amreo-manjaro-pc ~]$ pkcs11-tool --module /usr/lib/bit4id/libbit4xpki.so -O
Using slot 0 with a present token (0x0)
Certificate Object; type = X.509 cert
  label:      CNS User Certificate
  subject:    DN: O=Camera di Commercio, OU=CCIAA Bergamo, C=IT, SN=Laisa, CN=<miocf>\/7420<serie tessera>.<boh>/dnQualifier=AUT0<boh>, GN=Andrea
  ID:         43xxxx30
Data object 1002
  label:          'PDATA'
  application:    'PDATA'
  app_id:         2.0.<boh>
  flags:           modifiable
Public Key Object; RSA 1024 bits
  label:      CNS User Public Key
  ID:         43xxxx30
  Usage:      encrypt, verify
  Access:     none
Certificate Object; type = X.509 cert
  label:      DS User Certificate3
  subject:    DN: C=IT, SN=Laisa/serialNumber=TINIT-<miocf>, CN=Laisa Andrea/dnQualifier=SIGSP00<boh>, GN=Andrea
  ID:         44xx33
Public Key Object; RSA 2048 bits
  label:      DS User Public Key3
  ID:         44xx33
  Usage:      encrypt, verify
  Access:     none
Public Key Object; RSA 1024 bits
  label:      test-key
  ID:         b7yy66
  Usage:      encrypt, verify
  Access:     local
[amreo@amreo-manjaro-pc ~]$ pkcs11-tool -O
Using slot 0 with a present token (0x0)
Public Key Object; RSA 1024 bits
  label:      CNS0
  ID:         01
  Usage:      verify, wrap
  Access:     none
Certificate Object; type = X.509 cert
  label:      CNS0
  subject:    DN: O=Camera di Commercio, OU=CCIAA Bergamo, C=IT, SN=Laisa, CN=<miocf>\/7420<seriale carta>.<boh>/dnQualifier=AUT0<boh>, GN=Andrea
  serial:     0CxxEB
  ID:         01
Profile object 23xx68
  profile_id:          CKP_PUBLIC_CERTIFICATES_TOKEN (4)
Data object 23xx64
  label:          'EF_DatiProcessore'
  application:    'EF_DatiProcessore'
  app_id:         <empty>
  flags:          <empty>
Data object 23xx60
  label:          'EF_IDCarta'
  application:    'EF_IDCarta'
  app_id:         <empty>
  flags:          <empty>
Data object 23xx56
  label:          'EF_DatiPersonali'
  application:    'EF_DatiPersonali'
  app_id:         <empty>
  flags:          <empty>
Data object 23xx52
  label:          'EF_DatiPersonaliAggiuntivi'
  application:    'EF_DatiPersonaliAggiuntivi'
  app_id:         <empty>
  flags:          <empty>
Data object 23xx48
  label:          'EF_MemoriaResidua'
  application:    'EF_MemoriaResidua'
  app_id:         <empty>
  flags:          <empty>
Data object 23xx44
  label:          'EF_ServiziInstallati'
  application:    'EF_ServiziInstallati'
  app_id:         <empty>
  flags:          <empty>
Data object 23xx40
  label:          'EF_INST_FILE'
  application:    'EF_INST_FILE'
  app_id:         <empty>
  flags:          <empty>
Data object 23xx36
  label:          'EF_CardStatus'
  application:    'EF_CardStatus'
  app_id:         <empty>
  flags:          <empty>
Data object 23xx32
  label:          'EF_GDO'
  application:    'EF_GDO'
  app_id:         <empty>
  flags:          <empty>
Data object 23xx28
  label:          'EF_RootInstFile'
  application:    'EF_RootInstFile'
  app_id:         <empty>
  flags:          <empty>
[amreo@amreo-manjaro-pc ~]$ pkcs11-tool --read-object --id 01 --type cert --output-file cert.der
Using slot 0 with a present token (0x0)
[amreo@amreo-manjaro-pc ~]$ openssl x509 -in cert.der -inform der -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 81xx91 (0xc8xxb)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=IT, O=InfoCamere S.C.p.A., OU=Trust Service Provider, serialNumber=02xx07, CN=InfoCamere Servizi di Certificazione CA
        Validity
            Not Before: Oct 18 06:55:51 2022 GMT
            Not After : Oct 18 00:00:00 2025 GMT
        Subject: O=Camera di Commercio, OU=CCIAA Bergamo, C=IT, SN=Laisa, CN=<miocf>/7420<seriale tessera>.<boh>, dnQualifier=AUT0<boh>, GN=Andrea
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (1024 bit)
                Modulus:
                    00:b2:42:ba:aa:28:f3:59:75:fc:ce:74:d5:77:04:
                    <omesso>
                    76:5d:ea:c7:f3:3d:91:e9:55
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Extended Key Usage: 
                TLS Web Client Authentication
            X509v3 Certificate Policies: 
                Policy: 1.3.76.16.2.1
                  User Notice:
                    Explicit Text: Identifies X.509 authentication certificates issued for the italian National Service Card (CNS) project in according to the italian regulation
                  CPS: http://www.cnipa.gov.it
                Policy: 1.3.76.14.1.1.80
                  CPS: https://id.infocamere.it/digital-id/firma-digitale/manuali.html
                  User Notice:
                    Explicit Text: InfoCamere S.C.p.A. CNS Certificate
            X509v3 Issuer Alternative Name: 
                email:contatti@infocamere.it
            Authority Information Access: 
                OCSP - URI:http://ocsp.sc.ca.infocamere.it
            X509v3 CRL Distribution Points: 
                Full Name:
                  URI:http://crl.ca.infocamere.it/ca/sc/CRL02.crl
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Authority Key Identifier: 
                99:08:1B:2E:22:DC:12:36:A8:C5:47:60:DD:80:E6:E9:69:2E:FC:70
            X509v3 Subject Key Identifier: 
                67:88:<omesso>:1B:5E
    Signature Algorithm: sha1WithRSAEncryption
    Signature Value:
        10:db:93:4f:b7:06:93:ca:94:e5:9a:40:cd:4c:86:5a:2e:8b:
        <omesso>
        55:27:79:59:c9:ef:92:d3

In ogni caso credo che firefox stia utilizzando OpenSC invece di bit4id, per cui una possibile soluzione, seppure tossica, è quella di cambiare la sua configurazione per utilizzare bit4id.