Creazione di un pacchetto per installare i certificati in Windows Store

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
megas
Messaggi: 8
Iscrizioni: 7 dicembre 2018 - ore 13:59

18 giugno 2021 - 17:06

Buongiorno,

Sto cercando di creare un pacchetto per installare i certificati sull'intera flotta.
Nella sezione di installazione faccio questo:

Codice: Seleziona tutto

CPath=r'C:\CERTIFMAAF'
ROOTlist=['IGCAACracineEtatfrancais.crt']
CINTList=['ACAGENTSAGRIALIMAUTONOME.crt',
          'ACAGENTSAVANCEE.crt',
          'ACAGENTSDDIAVANCEE.crt',
          'ACAGENTSDDISTANDARD.crt',
          'ACAGENTSSTANDARD.crt',
          'ACDISPOSITIFTECHNIQUE.crt',
          'ACDISPOSITIFTECHNIQUEDDI.crt',
          'ACPARTENAIRESAGRIALIMAUTONOME.crt',
          'ACPARTENAIRESAVANCEE.crt',
          'ACPARTENAIRESSTANDARD.crt',
          'ACRACINEAGRIALIMAUTONOME.crt',
          'ACRACINEMINISTEREENCHARGEDELAGRICULTURE.crt',
          'ACSERVEURSAGRIALIMAUTONOME.crt',
          'ACSERVEURSAVANCEE.crt',
          'ACSERVEURSDDISTANDARD.crt',
          'ACSERVEURSPARTENAIRESAGRIALIMAUTONOME.crt',
          'ACSERVEURSSTANDARD.crt',
          'ACUSAGERS.crt']

def install():
    if isdir(CPath):
        print('-- Déjà en place, on passe...')
    else:
        mkdirs (CPath)
        copytree2(r'.\CERTIFMAAF',CPath ,onreplace=default_overwrite)
        for cert in (ROOTlist):
            print (" Installing " + cert + " in Trusted Root CA Store.")
            cmd=r'certutil.exe -silent -addstore root {}\{}.crt'.format(CPath,cert)
            run_notfatal(cmd)
        for cert in (CINTList):
            print (" Installing " + cert + " in Trusted Intermediaries CA.")
            cmd=r'certutil.exe -silent -addstore ca {}\{}.crt'.format(CPath,cert)
            run_notfatal(cmd)
Non ho riscontrato errori (è normale, è in modalità silenziosa), tranne il fatto che i certificati non vengono installati.
Si tratta di un problema di diritti? L'account del computer/sistema non può integrare i certificati?
Come posso farlo funzionare?
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

21 giugno 2021 - 15:45

Ciao Megs,

Nel codice, la sostituzione sembra aggiungere un file .crt al nome del file che contiene già un file .crt:

Codice: Seleziona tutto

{}\{}.crt
L'agente WAPT esegue il contenuto della funzione `def install()` come account di sistema locale, quindi ha i diritti per aggiungere certificati all'archivio locale. Tuttavia, è necessario prestare attenzione quando si creano directory nella radice (C:\CERTIFMAAF) con autorizzazioni ereditate per impedire che utenti diversi dall'account di sistema locale possano scrivervi. Infatti, non è necessario creare una copia intermedia in C:\CERTIFMAAF (se non ci sono altre applicazioni che necessitano di accedere ai file .crt) ed è possibile utilizzare `certutil` direttamente dalla directory di installazione del pacchetto WAPT.

Sinceramente,

Denis
Denis Cardon - Tranquil IT
Condividi le tue esperienze su WAPT! Inviaci gli URL dei tuoi blog e articoli nella "La tua opinione del forum e li pubblicheremo sul di WAPT
megas
Messaggi: 8
Iscrizioni: 7 dicembre 2018 - ore 13:59

21 giugno 2021 - 16:21

Sì, era proprio venerdì sera, quindi... :rotolo: .
Inoltre, i percorsi non mi sono chiari, quindi non c'è modo di recuperare il percorso corretto del certificato a meno che non lo copi in un posto dove so con certezza dove si trova. Ho provato il percorso .\CERTIFMAAF ma puff... non l'ho trovato. :lol:

Ma comunque non cambia nulla. Certutils non funziona tramite prompt dei comandi. Funziona con PowerShell, tuttavia, poiché non richiama un eseguibile esterno.

Ho compilato una versione più semplice e intuitiva per tutti (non testata su Win 7). Sentitevi liberi di usarla come guida, se lo desiderate. Testata e funzionante su Win 10. WAPT 1.8.2. Versione Linux core.

Codice: Seleziona tutto

from setuphelpers import *
import os

uninstallkey = []
CRootPath=r'C:\CERTIFMAAF\ROOT'
CCaPath=r'C:\CERTIFMAAF\CA'
Certlist=[]

def install():
    global CRootPath
    global CCaPath
    global Certlist

    if isdir(CRootPath):
        print("-- Déjà en place, on passe...")
    else:
        copytree2(r'.\CERTIFMAAF',r'C:\CERTIFMAAF' ,onreplace=default_overwrite)

        for cert in os.listdir(CRootPath):
            cmd=r'import-certificate {}\{} -CertStoreLocation "Cert:\LocalMachine\Root"'.format(CRootPath,cert)
            print (cmd)
            run_powershell(cmd)
        for cert in os.listdir(CCaPath):
            cmd=r'import-certificate {}\{} -CertStoreLocation "Cert:\LocalMachine\CA"'.format(CCaPath,cert)
            print (cmd)
            run_powershell(cmd)

def uninstall():
    if isdir(CRootPath):
        print ("Removing... ")
        remove_tree (CPath)
        for cert in (RemoveList):
            print (" Removing ALL IGC and AC in Trusted Root & CA Store.")
            cmd=r'get-childitem cert:"LocalMachine\Root" | Where-object {$_.subject -like "CN=IGC/A AC*"} | ForEach-Object {Remove-Item -Path "Cert:\LocalMachine\CA\$($_.Thumbprint)"}'
            run_powershell(cmd)
            cmd=r'get-childitem cert:"LocalMachine\CA" | Where-object {$_.subject -like "CN=AC *"} | ForEach-Object {Remove-Item -Path "Cert:\LocalMachine\CA\$($_.Thumbprint)"}'
            run_powershell(cmd)
Infine, non resta che capire come trovare l'identificativo di ciascun certificato dalla cartella e dal suo contenuto memorizzato, per poi eliminarli in modo mirato e creare un pacchetto generalizzato. Ma non ho tempo.
Bloccato