Condividi tramite


Identità persistente MSIX

Questa funzionalità consente di firmare i pacchetti con un nuovo certificato mantenendo comunque l'esperienza di aggiornamento dell'app. In altre parole, questo consente al pacchetto di rendere persistente l'identità del pacchetto precedente nella piattaforma senza la necessità di firmare con il certificato precedente (originale). A partire da Windows Insider Preview Build 22000, è necessario creare un artefatto per mostrare la relazione tra il certificato precedente e il nuovo certificato usato per la firma. Di seguito è riportata una spiegazione dettagliata di come rendere persistente l'identità del pacchetto per mantenere l'esperienza di aggiornamento.

Requisiti

  • Ottenere MakeAppx.exe tramite Windows SDK. Questa funzionalità è attualmente disponibile in Windows SDK Preview 22000
  • Ottenere SignTool.exe tramite Windows SDK. Questa funzionalità è attualmente disponibile in Windows SDK Preview 22000
  • Certificato precedente (CN=Old) usato per firmare il pacchetto originale
  • Nuovo certificato (CN=New) che verrà usato per firmare il pacchetto

Guida passo a passo

Questa è un'istruzione dettagliata su come firmare il pacchetto con il nuovo certificato mantenendo l'identità del pacchetto.

Creare l'artefatto

  1. Scrivere l'artefatto XML che descrive in dettaglio i vecchi e nuovi editori. Denominare tutto ciò che ti piace, artifact.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Publisher xmlns="http://schemas.microsoft.com/appx/publisherbridging/2021" Old="CN=Old" New="CN=New" />
  1. Scrivere un file di definizione del catalogo (CDF) per creare il catalogo che verrà usato per firmare l'artefatto. Chiamalo come vuoi, artifact.cdf:
[CatalogHeader]
Name=artifact.cat
CatalogVersion=2
HashAlgorithms=SHA256

[CatalogFiles]
<HASH>artifact.xml=artifact.xml
  1. Esegui makecat.exe su questo CDF. Creerà il file specificato in esso
makecat.exe artifact.cdf
  1. Firmare il catalogo usando il certificato precedente
signtool.exe sign /f old-cert.pfx /fd SHA256 artifact.cat

A questo punto, è sufficiente conservare i file XML e CAT dopo questa operazione. È possibile creare diversi artefatti, ma la piattaforma supporta attualmente fino a 5.

Annotazioni

Si consiglia di applicare un timestamp al file di catalogo. Se il catalogo non viene timestampato, l'artefatto diventa inutile al momento della scadenza del certificato precedente.

Creare il pacchetto

  1. Creare un file ponte del server di pubblicazione per indicare a makeappx.exe quali artefatti usare. Questo file è simile al file di mapping. Nominalo come preferisci, artifacts.txt
[PublisherBridging]
"artifact.xml" "artifact.cat"

Ogni riga deve contenere una coppia di percorsi di file XML e CAT. Gli artefatti devono essere ordinati secondo il loro ordine di applicazione. Se si dispone di due artefatti, uno per Publisher1-Publisher2> e un altro per Publisher2-Publisher3>, è necessario elencare prima quello per Publisher1-Publisher2>

  1. Chiamare makeappx.exe con il flag /pb per puntare al file di bridging del server di pubblicazione:
makeappx.exe pack /p app.msix /d .\app\ /pb artifacts.txt
  1. Firmare il pacchetto usando il nuovo certificato
signtool.exe sign /f new-cert.pfx /fd SHA256 app.msix

A questo punto è disponibile un pacchetto in cui sono archiviati gli artefatti e che è stato firmato con il nuovo certificato. È possibile distribuire il pacchetto come qualsiasi altro pacchetto MSIX.

Considerazioni

  • Consigliamo che il catalogo sia marcato temporalmente. A tale scopo, è necessario aggiungere questi argomenti nella chiamata a signtool prima del percorso del catalogo: /td SHA256 /tr

  • Sarà comunque necessario installare il certificato precedente (consigliato con timestamp) nel computer per installare il pacchetto firmato dal nuovo certificato.

  • Per sfruttare questa funzionalità, è necessario eseguire questa operazione prima che il certificato precedente sia scaduto.

  • Questa funzionalità funziona sia per i pacchetti MSIX che per i bundle MSIX