Firmare librerie su macOS
Da macOS Monterey è diventato necessario firmare anche eventuali moduli Apache che si intendono usare, come libphp.so
.
Dopo aver provato più guide, mi sono imbattuto in due guide1 2 che mi hanno aiutato a risolvere.
Riassumo dunque in questo post i passaggi necessari per poter firmare i propri moduli in autonomia.
Creazione di una Authority (CA)
Una Certificate Authority è un ente terzo di fiducia abilitato ad emettere un certificato digitale. Con questa procedura andremo a creare un’authority locale: di fatto ci auto-autenticheremo.
Ecco i N passi da seguire per configurare la CA:
- Aprire Accesso Portachiavi.app (Keychain access.app);
- Recarsi in Accesso Portachiavi -> Assistente Certificato -> Crea un’autorità di certificazione.
-
In Crea la tua Certificate Authority:
a. Inserisci il nome della CA;
b. Seleziona come Tipo identità: CA principale autofirmannte;
c. Certificato utente: Firma codice;
d. Spuntare Lascia che sia io a sovrascrivere i default;
e. Spuntare Rendi CA di default;
f. Inserire l’indirizzo e-mail;
g. Proseguire (se compare un errore, ignoratelo).
- Accettate i default per Informazioni del certificato e clicca continua (ignorare possibili avvisi);
- Inserire i campi richiesti circa le informazioni del certificatore;
- Accettare i default per Informazioni coppia di chiavi per questa CA e cliccare continua;
- Accettare i default per Specifica dati coppia di chiavi degli utenti della CA e cliccare continua;
- Accettare i default per Estensione utilizzo chiave per questa CA e cliccare continua;
- Accettare i default per Estensione utilizzo chiave per utentidi questa CA e cliccare continua;
- Nella maschera Estensione utilizzo chiave esteso per questa CA selezionare Includi estensione utilizzo chiave esteso, dunque selezionare Firma codice e continuare;
- Nella maschera Estensione utilizzo chiave esteso per utenti di questa CA accettare i valori di default e continuare;
- In Estensione limiti di base per questa CA, accettare dunque i valori predefiniti e procedere;
- Accettare i valori predefiniti anche per le successive 3 maschere (Estensione limiti di base per gli utenti di questa CA, Estensione nome soggetto alternativo per questa CA e Nome soggetto alternativo per gli utenti di questa CA);
- Selezionare il portachiavi login e selezionare la spunta;
- Premere dunque (finalmente) su “Crea”.
E così abbiamo creato l’autorità che genererà il certificato: dunque non è finita.
Creazizone di un certificato
- Aprire Accesso Portachiavi.app;
-
Recarsi in Accesso Portachiavi -> Assistente Certificato -> Crea un certificato.
-
Nella maschera appena comparsa specificare:
a. Il nome del certificato;
b. Tipo identità: Leaf;
c. Tipo certificato: Firma codice;
- Selezionare CA or issuer dalla lista e premere Crea, premendo dunque Fatto.
Firma
Supponiamo di dover firmare libmodulo.so
e che il certificato si chiami Alessandro
.
Il comando da lanciare sarà dunque:
$ codesign --sign 'Alessandro' --force --keychain ~/Library/Keychains/login.keychain-db libmodulo.so
Backup articolo
Le note con cui ho redatto l’articolo si possono trovare seguendo questo link.