Am o VM care rulează Windows Server 2019 Datacenter Core, care rulează un agent de compilare Jenkins ca serviciu neinteractiv cu propriul cont de utilizator local (.\construi
).
Acum aș dori să adaug semnarea codului. Pentru a avea cel puțin o aparență de securitate, vreau să folosesc un smartcard virtual care se bazează pe operațiuni cripto pe gazdă, astfel încât un atacator care este interesat să copieze materialul cheie ar trebui să iasă din VM.
Am configurat un cititor virtual USB CCID cu un card introdus permanent și apare în Windows:
PS> Get-PnpDevice
...
Eroare SmartCardReader Microsoft Usbccid Smartcard Reader (WUDF) USB\VID_08E6...
...
În primul rând, Eroare
statul este îngrijorător. am aplicat această remediere, care pare să fi îmbunătățit puțin lucrurile (apare cardul Bine
imediat după pornire), dar asta nu pare permanent.
Problema în care sunt cu adevărat blocat este modelul de securitate pentru accesul cu smartcard. Majoritatea documentației am putut găsi preocupări folosind cardul inteligent pentru conectare, pentru care politica este simplă: interfața de utilizare de conectare are acces la card pentru a verifica acreditările, apoi transmite acest acces la sesiunea utilizatorului.
În cazul meu, totuși, am o conectare neinteractivă care nu este asociată cu un desktop. Când pornesc manual SCardSvr
și ScDeviceEnum
servicii, nu pot accesa cardul nici ca administrator când sunt autentificat prin SSH:
Microsoft Smart Card Resource Manager nu rulează.
SCardAccessStartedEvent: Serviciul este într-o stare necunoscută.
CertUtil: Comanda -SCInfo FAILED: 0x80070005 (WIN32: 5 ERROR_ACCESS_DENIED)
CertUtil: Accesul este refuzat.
ceea ce are sens, iar din consola locală, ca Administrator, primesc
PS> certutil -scinfo
Microsoft Smart Card Resource Manager rulează.
Starea curentă a cititorului/cardului:
SCardEstablishContext: Managerul de resurse Smart Card nu rulează. 0x8010001d (-2146435043 SCARD_E_NO_SERVICE)
SCardEstablishContext a eșuat pentru domeniul de aplicare al utilizatorului.
Cele două servicii se termină de la sine după două minute.
Întrebări:
- Cum pot verifica dacă cardul inteligent emulat este văzut ca fiind introdus și, eventual, să enumerez certificatele conținute?
- Cum pot da permis unui utilizator să acceseze cardul inteligent (
certutil -scinfo
probabil ar arăta asta)?
- Cum pot importa un certificat care există deja pe smartcard în depozitul de chei al utilizatorului local? Am nevoie de certificatul P7 original sau îl pot extrage de pe card în sine?
- Trebuie să fac ceva pentru a menține serviciul să funcționeze continuu sau rezolvarea problemelor de acces îi va permite și pornirea la cerere?