Beginnend mit macOS Sierra kann ich keine Codesign-Identität mehr in einen Schlüsselbund mit / usr / bin / security importieren, ohne dass die Benutzeroberfläche usr / bin / Codesign bei Verwendung dieser Identität zum Zugriff auffordert. Dadurch werden die Paketskripte des Buildservers beschädigt. Es scheint keine Problemumgehung zu geben. Dies betrifft benutzerdefinierte Schlüsselanhänger, aber auch die Datei login.keychain.
Reproduktionsschritte: Führen Sie die folgenden Befehle im Terminal aus (für den Import muss eine Signaturidentität verfügbar sein):
security create-keychain -p test buildagent.keychain
security unlock-keychain -p test buildagent.keychain
security list-keychains -d user -s buildagent.keychain
security default-keychain -s buildagent.keychain
security import identity.p12 -k buildagent.keychain -P password -T /usr/bin/codesign
codesign -vfs '$IDENTITY' '${PRODUCT}' --keychain 'buildagent.keychain'
Ergebnis: macOS zeigt eine UI-Eingabeaufforderung an, in der Sie um Erlaubnis gebeten werden, auf den zuvor importierten privaten Schlüssel zuzugreifen.
Ich habe viele Problemumgehungen versucht, aber nichts scheint zu funktionieren:
- Verwenden der neuen Erweiterung .keychain-db bei der Angabe des Schlüsselbundnamens
- Verwenden Sie die login.keychain anstelle der benutzerdefinierten
- Importieren des p12 mit -A ('Jeder Anwendung erlauben, auf den importierten Schlüssel zuzugreifen')
- Zertifikat und Schlüssel separat importieren (zuvor mit openssl pkcs12 aus dem p12 extrahiert)
Das Importieren der Identität funktioniert definitiv. Ich kann das Zertifikat und den Schlüssel sehen, wenn der Inhalt des Schlüsselbunds in der Anwendung "Schlüsselbundzugriff" angezeigt wird. Die Zugriffssteuerungseinstellung für den privaten Schlüssel ist ebenfalls korrekt konfiguriert (mit der gewünschten Codesign-Ausnahmeregel).
Wie kann ich die UI-Eingabeaufforderung von Sierra vermeiden?
Always allow
dann funktioniert die CLI gut.