Also sprach Alessandro

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:

  1. Aprire Accesso Portachiavi.app (Keychain access.app);
  2. Recarsi in Accesso Portachiavi -> Assistente Certificato -> Crea un’autorità di certificazione. Menù di creazione della CA
  3. 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).

    Crea la tua CA

  4. Accettate i default per Informazioni del certificato e clicca continua (ignorare possibili avvisi);
  5. Inserire i campi richiesti circa le informazioni del certificatore;
  6. Accettare i default per Informazioni coppia di chiavi per questa CA e cliccare continua; Informazione coppia di chiavi
  7. Accettare i default per Specifica dati coppia di chiavi degli utenti della CA e cliccare continua;
  8. Accettare i default per Estensione utilizzo chiave per questa CA e cliccare continua; Estensione CA
  9. Accettare i default per Estensione utilizzo chiave per utentidi questa CA e cliccare continua; Estensione CA
  10. Nella maschera Estensione utilizzo chiave esteso per questa CA selezionare Includi estensione utilizzo chiave esteso, dunque selezionare Firma codice e continuare;
  11. Nella maschera Estensione utilizzo chiave esteso per utenti di questa CA accettare i valori di default e continuare;
  12. In Estensione limiti di base per questa CA, accettare dunque i valori predefiniti e procedere;
  13. 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);
  14. Selezionare il portachiavi login e selezionare la spunta; Portachiave login
  15. Premere dunque (finalmente) su “Crea”.

E così abbiamo creato l’autorità che genererà il certificato: dunque non è finita.

Creazizone di un certificato

  1. Aprire Accesso Portachiavi.app;
  2. Recarsi in Accesso Portachiavi -> Assistente Certificato -> Crea un certificato.

    Menù di creazione della CA

  3. Nella maschera appena comparsa specificare:

    a. Il nome del certificato;

    b. Tipo identità: Leaf;

    c. Tipo certificato: Firma codice;

  4. 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.

Referenze