CIE middleware su macOS Monterey 12.1 chip M1 (ARM) e lettore miniLector AIR NFC v3

Buongiorno,

sto cercando di configurare il mio Macbook per l’accesso con CIE ai vari portali della pubblica amministrazione. Il mio setup:

  • un Macbook con OS Monterey 12.1 e chip M1 (tecnologia ARM).
  • miniLector AIR NFC v3 (marca Bit4id)

Ho installato il software CIE ID versione 1.4.3.3 che è l’ultima disponibile al momento. Ho scaricato il file PKG da qui: https://github.com/italia/cie-middleware-macos/releases/download/v1.4.3.3/CIE-Middleware-signed.pkg.zip

Quando inserisco il PIN della carta e schiaccio invio, CIE ID mi dice:

CIE non presente sul lettore

Presumo che il problema sia il lettore NFC, ma non sono sicuro come verificare questa cosa e come risolverla.

Vedo la libreria CIE middleware al posto dove dovrebbe essere:

ls -lah /Library/ipzs
total 27272
drwxrwxr-x   3 root  wheel    96B  4 Nov 14:18 .
drwxr-xr-x  71 root  wheel   2.2K  8 Jan 14:46 ..
-rwxr-xr-x   1 root  wheel    13M  4 Nov 14:05 libcie-pkcs11.dylib

Per quanto riguarda il lettore NFC:

C’è da dire che dopo aver installato questi driver quando inserisco il lettore via porta USB-C (con adattatore da USB a USB-C), vedo la lucina arancione fissa - come dovrebbe essere. Mentre prima di installare i driver vedevo una lucina lampeggiante.

Se lancio il comando system_profiler SPUSBDataType, allora vedo il lettore NFC attaccato via USB:

USB:

    USB 3.1 Bus:

      Host Controller Driver: AppleT6000USBXHCI

    USB 3.1 Bus:

      Host Controller Driver: AppleT6000USBXHCI

        miniLector AIR NFC v3:

          Product ID: 0x3403
          Vendor ID: 0x25dd
          Version: 3.53
          Speed: Up to 12 Mb/s
          Manufacturer: BIT4ID
          Location ID: 0x01100000 / 1
          Current Available (mA): 500
          Current Required (mA): 160
          Extra Operating Current (mA): 0

    USB 3.1 Bus:

      Host Controller Driver: AppleT6000USBXHCI

Se però lancio il comando system_profiler SPSmartCardsDataType vedo che ci sono i “Reader Drivers” (tutto bene), ci sono anche i “SmartCard Drivers” (tutto bene), ma non viene listato il lettore… presumo sia un problema di settaggio del livello PC/SC, mentre a livello USB va tutto bene…

SmartCards:

    Readers:

    Reader Drivers:

      #01: fr.apdu.ccid.smartcardccid:1.4.34 (/usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle)
      #02: com.bit4id.ccid:1.0.5 (/Library/bit4id/ccid/ifd-ccid-unlisted.bundle)
      #03: com.bit4id.ccid:1.0.5 (/Library/bit4id/ccid/ifd-b4iccid.bundle)

    SmartCard Drivers:

      #01: it.ipzs.CIE-ID.CIEToken:1.4.3.3 (/Applications/CIE ID.app/Contents/PlugIns/CIEToken.appex)
      #02: com.apple.CryptoTokenKit.pivtoken:1.0 (/System/Library/Frameworks/CryptoTokenKit.framework/PlugIns/pivtoken.appex)

    Available SmartCards (keychain):

        com.apple.setoken:

        com.apple.setoken:aks:

    Available SmartCards (token):

        com.apple.setoken:

        com.apple.setoken:aks:

Anche il comando pcsctest si bloccal su

Please insert a working reader   : 

Cosa bisogna fare per aggiustare il livello PC/SC? Io al momento non so cos’altro dovrei fare a parte assumere che i driver di Bit4id non funzionino, ma mi pare molto strano.

Un paio di link utili sui quali mi sono basato per fare i controlli qua sopra:

Quindi il Mac non ti vede il miniLector AIR 3.
Hai ragione con il comando system_profiler SPSmartCardsDataType come prima voce ti dovrebbe dare il lettore:
Ad esempi a me da, #01: REINER SCT cyberJack RFID basis (no card present)
Ed in più ti dovrebbe dare le informazioni relative alla CIE
it.ipzs.AbilitaCIE.CIEToken:CIE-:
seguito dai certificati, validità, ecc.

Però lo sto facendo dal Mac INTEL, domani provo anche a farlo dal Mac con M1, magari sui Mac M1 quel comando non va.

Immagino che tu abbia provato tutte le solite cose, collegare il lettore direttamente al Mac senza Hub o cavi USB prolunga e riavviare il Mac.

Secondo me sono i driver che hai installato, che forse non vanno bene, quelli del tuo link sono del 2020 quelli bit4id/ccid che uso io sono del 2022 ed hanno ade sempio anche questo file:
ifd-ccid-1.4.34.bundle

Io li ho scaricati dal sito della sanità perché mi servivano per leggere la tessera Sanitaria nuova che ha il chip NFC.
Sono quelli bit4id-middleware-idemia-pkiman3-1.4.10.704.zip perché la mia tessera sanitaria è una ACTALIS, a te probabilmente non serviranno le cose in più che ti installerà dentro alla cartella bit4id, ma i driver aggiornati dentro a ccid si.

https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso

Prova a farlo anche tu.
In alternativa manda una Mail al supporto di bit4id e chiedigli dove scaricare gli ultimi driver, e magari se possibile manda qui il link, così da aiutare anche gli altri utenti che avessero il tuo stesso problema.

Ma come prima cosa, io proverei a cancellare la cartella bit4id, riavviare il Mac, installare nuovamente il software middleware, NON INSTALLARE i driver bit4id.
Riavviare nuovamente il Mac e riprovare.

EDIT:
Sul sito bit4id del ho trovato anche questi driver:

Sono per il Minilector Evo ma visto che molti Minilector fanno scaricare lo stesso file dei driver potrebbero anche funzionare.

1 Mi Piace

OK, allora riguardo a questi driver alternativi per Bit4id, grazie cercherò di capire come installarli senza interferire con gli altri driver:

# driver per la tessera sanitaria NFC TS-CNS
# https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso
wget https://swdownload1.agenziaentrate.gov.it/pub/sanita/bit4id-middleware-idemia-pkiman3-1.4.10.704.zip
# driver bit4id per Macbook M1 (chip ARM)
# https://www.bit4id.com/faq-minilector-evo-dispositivo/?slug=dove-trovare-i-driver-per-minilector-evo-avendo-computer-con-cpu-mac-apple-m1
wget https://b4-support-resources.s3.eu-south-1.amazonaws.com/root/Prodotti/Linea-Buffetti/minilector-evo/minilector-evo-macos-driver.zip

Per quanto riguarda i driver che al momento ho installato, se eseguo il comando tree -ph /Library/bit4id/ vedo file tipo le directory:

  • ifd-ccid-1.4.26.bundle
  • ifd-ccid-1.4.29.bundle
  • ifd-ccid-1.4.31.bundle
  • ifd-ccid-default.bundle
  • ifd-ccid-unlisted.bundle
  • ifd-ccid.bundle

Chissà come fa macOs a capire quale bundle usare a runtime, qualcuno lo sa?

Ad ogni modo riguardo al suggerimento:

Ma come prima cosa, io proverei a cancellare la cartella bit4id,
riavviare il Mac,
installare nuovamente il software middleware,
NON INSTALLARE i driver bit4id.
Riavviare nuovamente il Mac e riprovare.

Io sono un po’ confuso su come gestire queste librerie a basso livello su macOs, mi spiego meglio, quando invoco il comando sudo find / -name bit4id da terminale,
Lui mi dà 2 posti che sembrano uno il symlink (symbolic link) dell’altro, anche se a guardare i path sono uno la copia fisica dell’altro directory path (con tutti i file contenuti all’interno).

  • /Library/bit4id
  • /System/Volumes/Data/Library/bit4id

Cosa vuol dire cancellare la cartella bit4id? Devo cancellarle entrambe, o perché altrimenti ne vedo 2 separate ma che sembrano identiche anche nel contenuto?
Come funziona su macOS con l’installazione di librerie? Ci sono registri tipo su Windows che vanno puliti/modificati quando si rimuovono manualmente i file DLL?

Se cancello i file in quelle cartelle poi ho paura di rovinare qualche configurazione a basso livello che magari mi fa smettere di funzionare system_profiler SPSmartCardsDataType?
Penso io che magari invece dovrei sistemare anche altre cose tipo cancellare/modificare qualche altro file di configurazione tipo quelli che su Linux stanno su /etc/?

Un’altra cosa che volevo far notare è che io ho installato quel DMG/PKG originale dal sito di Bit4id perché:

  1. se inserivo il lettore NFC via cavo USB-C prima di installare i driver, allora mi dava una luce lampeggiante arancione
  2. So per esperienza su Linux che questa luce lampeggiante significa che mancano i driver
  3. ho verificato questo perché dopo aver installato quei driver la luce non lampeggiava più e anzi rimaneva sempre accesa come presumo debba essere

Non ho installato direttamente il software CIE middleware proprio perché presumevo di dover sistemare questa cosa della luce arancione lampeggiante. O almeno così avevo risolto a suo tempo su Linux.

Ultima cosa, per chiarire:

  1. il lettore NFC ha un cavo USB normale
  2. il Macbook M1 ha SOLO porte USB-C

Quindi devo per forza usare un adattatore da USB a USB-C, non ho alternative.

Come si fa a sapere che file vengono installati e dove a partire dal un file PKG di macOS? Tipo riesco a vedere dei log di sistema almeno? O qualche comando di utility che dà informazioni aggiuntive di contesto?

EDIT 9/1/23 9:15

Lascia stare il terminale e usa il Finder, l’interfaccia grafica, prendi l’intera cartella e la butti nel cestino e poi lo svuoti, quindi riavvia il Mac.
Per installare quelli nuovi fai doppio click sul file di installazione, non farlo a mano.
Se alla fine dell’installazione ti dice che è tutto apposto vuol dire che è tutto apposto.
O almeno che i file sono stati copiati ed installati correttamente.

Lascia stare quello che sai di Linux, OS X sopratutto per l’installazione e rimozione delle applicazioni, driver e simili funziona in modo del tutto diverso.
E lascia stare anche la cartella etc. Nel 99.5% dei casi non va toccata.

E sopratutto non andare a ravanare con il terminale, visto che non hai idea di come OS X sopratutto le ultime versioni gestiscono le directory library e system.
In realtà quei due percorsi puntano alla stessa directory, che si trova in:

  • /Library/bit4id

Sembrano due perché il path che parte dalla cartella system fa parte di quella parte del sistema non modificabile normalmente dall’utente.
In pratica e detta in maniera molto succinta nelle ultime versioni di OS X Apple ha diviso il OS X su due “partizioni” separate una chiamata Data dove sta la parte di OS X modificabile dall’utente, ed una chiamata System dove stanno i file che l’utente o le applicazioni installate dall’utente, non posso normalmente modificare i dati, non è una semplice questioni di permessi *nix è una cosa più complessa.
L’idea è quella di separare il più possibile OS X inteso come sistema operativo, da quello che l’utente fa ed installa, ed evitare che una applicazione possa andare a modificare il funzionamento di OS X all’insaputa dell’utente.
Ma dall’interfaccia grafica questa divisione non appare e sembra un solo volume con una sola partizione.
In pratica lascia stare la cartella System.

Quella che devi eliminare è in /Library/bit4id

l’Adattatore va bene anche un Hub USB va bene, tu cosa hai usato ? sei sicuro che l’adattatore e l’HUB funzionino correttamente ?

Molti lettori non hanno bisogno di driver perché OS X li supporta già di suo, bisogna vedere se il tuo é uno di questi, per questo ti ho consigliato di provare prima cancellando la cartella bit4id.

C’è comunque sempre bisogno di altri driver che dicono ad OS X ed ai vari programmi come leggere le Smart card che si mettono sul lettore ad esempio come leggere la CIE o la Tessera Sanitaria.
Da qui la necessità del software Middleware per leggere la CIE, e di bit4id-middleware-idemia-pkiman3-1.4.10.704.zip per leggere la Tessera Sanitaria.
Senza contare che ci sono comunque lettori bit4id che hanno bisogno di driver specifici per funzionare, da qui la necessita per alcuni lettori di scaricarsi i propri driver specifici.

OK grazie, allora nel frattempo ho trovato i symlink (symbolic link) a questo path:

$ ls -lah /usr/local/libexec/SmartCardServices/drivers
total 0
drwxr-xr-x  4 root  wheel   128B  6 Jan 15:43 .
drwxr-xr-x  3 root  wheel    96B  6 Jan 15:43 ..
lrwxr-xr-x  1 root  wheel    39B  6 Jan 15:43 ifd-b4iccid.bundle -> /Library/bit4id/ccid/ifd-b4iccid.bundle
lrwxr-xr-x  1 root  wheel    45B  6 Jan 15:43 ifd-ccid.bundle -> /Library/bit4id/ccid/ifd-ccid-unlisted.bundle

Questi symlink puntano al path /Library/bit4id/ccid/, quindi presumo di dover cancellare i symlink. O almeno cancellare sia i symlink, sia la roba che sta in /Library/bit4id/ccid/.

Per la cronaca (non strettamente legato al topic di CIE e SmartCard, ma più al discorso macOS recenti), questa storia del path /System/Volumes/Data/Library che sembrava replicare completamente /Library: è perché il path /System/Volumes/Data/ è un firmlink, una sorta di “volume di rete equivalente” che monta nel sistema operativo il file system dell’utente. Una sorta di speccio che macOS usa per “vedere” cosa fa l’utente di macOS.

Provo allora a cancellare queste librerie, riavviare macOS e fare vari tentativi :crossed_fingers:

Secondo la mia esperienza puoi anche lasciarli stare
Al limite apri quella cartella direttamente dal Finder e cancellala buttandola nel cestino.
La cartella da cancellare è Library/bit4id

OK allora la soluzione era di rimuovere i driver di Bit4id che avevo installato in precedenza :man_facepalming:

Quello che mi ha tratto in inganno all’inizio è questa lucina blu che continua a lampeggiare (mentre la lucina arancione dell’alimentazione rimane sempre accesa fissa - correzione rispetto ai miei messaggi precedenti). Mi sono confuso perché su Linux la lucina blu si attiva solo quando appoggio la carta sul lettore :man_shrugging:

Ad ogni modo per rimuovere i driver su macOS:

# andare dove ci sono i symlink
$ cd /usr/local/libexec/SmartCardServices/drivers
# controllare i symlink esistenti
$ ls -lah
total 0
drwxr-xr-x  4 root  wheel   128B  6 Jan 15:43 .
drwxr-xr-x  3 root  wheel    96B  6 Jan 15:43 ..
lrwxr-xr-x  1 root  wheel    39B  6 Jan 15:43 ifd-b4iccid.bundle -> /Library/bit4id/ccid/ifd-b4iccid.bundle
lrwxr-xr-x  1 root  wheel    45B  6 Jan 15:43 ifd-ccid.bundle -> /Library/bit4id/ccid/ifd-ccid-unlisted.bundle
# rimuovere i symlink
$ sudo unlink ifd-b4iccid.bundle
$ sudo unlink ifd-ccid.bundle
# spostare i driver di bit4id da qualche altra parte
# ma non lasciarli tra le librerie
$ sudo mv /Library/bit4id ~/tmp

Poi, si può effettuare un test molto utile con il comando pcsctest (schiacciare 1 quando il prompt dice Enter the reader number):

$ pcsctest

MUSCLE PC/SC Lite Test Program

Testing SCardEstablishContext    : Command successful.
Testing SCardGetStatusChange
Please insert a working reader   : Command successful.
Testing SCardListReaders         : Command successful.
Reader 01: BIT4ID miniLector AIR NFC v3
Enter the reader number          : 1
Waiting for card insertion
                                 : Command successful.
Testing SCardConnect             : Command successful.
Testing SCardStatus              : Command successful.
Current Reader Name              : BIT4ID miniLector AIR NFC v3
Current Reader State             : 0x54
Current Reader Protocol          : 0x1
Current Reader ATR Size          : 20 (0x14)
Current Reader ATR Value         : XX XX ... XX XX ... XX XX
Testing SCardDisconnect          : Command successful.
Testing SCardReleaseContext      : Command successful.
Testing SCardEstablishContext    : Command successful.
Testing SCardGetStatusChange
Please insert a working reader   : Command successful.
Testing SCardListReaders         : Command successful.
Reader 01: BIT4ID miniLector AIR NFC v3
Enter the reader number          : ^C

Quel lungo ATR Value se lo si copia/incolla qui https://smartcard-atr.apdu.fr/ viene riconosciuta la SmartCard come “Italian electronic identity card (eID)”.

Anche il comando system_profiler SPSmartCardsDataType ora mostra il lettore NFC tra la lista di lettori disponibili.

A questo punto ho potuto abbinare la CIE con il software CIE ID senza problemi.

Per quanto riguarda i browser:

Ho seguito la procedura per macOS descritta:

  1. Chrome è funzionato subito, senza problemi mi ha presentato il prompt coi dettagli del certificato dentro alla CIE e la richiesta di inserire le ultime 4 cifre del PIN.
  2. Chromium uguale a Chrome
  3. Per quanto riguarda Firefox (versione 108.0.2) ci sono problemi ad abbinare il modulo della libreria PKCS11 di IPZS /Library/ipzs/libcie-pkcs11.dylib, per qualche motivo il browser non accetta questa implementazione della libreria, mi dice “Unable to add module”


Screenshot 2023-01-10 at 22.24.09
Screenshot 2023-01-10 at 22.24.16

Cosa manca da fare? Non capisco perché Firefox non funzioni o cosa sto sbagliando nella procedura.

tappoz ti do un consiglio se continui ad utilizzare OS X come fosse una distribuzione *nix, ti troverai in un mare di problemi, ed alla fine riuscirai solo ad avere un sistema instabile.
La maggior parte di quello che c’è nella cartella Library su OS X, non funziona come le librerie e le dipendenze su *nix, OS X le gestisce la gran parte di quello che c’è nella cartella Library sia qulla principale che quella dell’utente, in modo totalmente diverso, lo stesso dicasi epr le varie applicazioni quando ci mettono i loro file.
In pratica su OS X ti sarebbe bastato buttare la cartella bit4id nel cestino e festa finita.
Anche per Safari il browser di riferimento di Apple, non ce bisogno di fare alcuna configurazione, la riconosce da solo.

Per quanto riguarda Firefox non stai sbagliando, ma avvolte firefox è un po’ “esigente” in fase di configurazione dei vari lettori, driver, ecc.
Non è che per caso avevi hai provato ad configurarlo subito dopo aver provato la CIE con Chromium o Chrome ?
Perché ad esempio a me a volte Firefox non mi riconosceva la CIE e il lettore, malgrado fossero già configurati, se subito prima lo avevo usato con Safari o Chrome
Stranamente l’opposto non mi ha mai dato problemi.
Quindi:
Accertati di avere il lettore collegato al Mac, senza alcuna CIE sopra prima di avviare Firefox, e di avere gli altri browser chiusi, meglio, ancora riavvia il Mac e accertati di non aver selezionato nulla nella parte sinistra “Security Modules and Devices”.
Infine non inserire la path del file libcie-pkcs11.dylib a mano, ma clicca su Browser e selezionalo da li