Sicherheit / Codesign in Sierra: Keychain ignoriert Zugriffssteuerungseinstellungen und Benutzerschnittstellenaufforderungen für die Berechtigung
Beginnend mit macOS Sierra, ich kann nicht importieren codesign-Identität in einen Schlüsselanhänger mit /usr/bin/security mehr ohne usr/bin/codesign UI-Eingabeaufforderung für den Zugriff mit dieser Identität. Das bricht die Verpackung Skripts build-server. Es scheint keinen workaround. Dies betrifft eigene erstellt Schlüsselanhänger, sondern auch der login.keychain.
Schritte zum Reproduzieren:
Führen Sie die folgenden Befehle in Terminal aus (erfordert eine Unterzeichnung Identität zur Verfügung zu importieren):
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-aufgefordert werden, die Berechtigung für den Zugriff auf die zuvor importierten privaten Schlüssel.
Ich habe versucht, viele workarounds, aber nichts scheint zu funktionieren:
- Mit dem neuen .Schlüsselanhänger-db-Erweiterung bei der Angabe der Schlüsselbund-Namen
- Mit dem login.Schlüsselanhänger, anstatt die benutzerdefinierte
- Importieren des p12 mit Ein ("Erlauben es, eine beliebige Anwendung, um den Zugriff auf die
importierte Schlüssel') - Import das Cert und Key separat (extrahiert wird
aus der p12, bevor Sie mit openssl pkcs12)
Import der Identität funktioniert auf jeden Fall, sehe ich das cert und der key bei der Anzeige der Inhalt der Schlüsselbund in der Keychain Access-Anwendung. Die Zugriffseinstellung für den privaten Schlüssel ist auch korrekt konfiguriert (mit den gewünschten codesign Ausnahme der Regel).
Wie kann ich vermeiden, dass die UI-Eingabeaufforderung von Sierra?
InformationsquelleAutor der Frage Sven Driemecker | 2016-10-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Befehl, den Sie verwenden müssen, ist wie folgt:
security set-key-partition-list -S apple-tool:,apple: -s -k keychainPass keychainName
Bitte Bedenken Sie, dass dieses Kommandozeilen-tool funktioniert ähnlich wie die Liste-Schlüsselanhänger Art der änderung. Wenn Sie ausführen, set-Taste-partition-Liste mit einem einzigen Wert, es überschreibt alle partitionIDs in den Zertifikaten. Es wird keine Validierung der übergebenen Werte.
Was dieser Befehl tut, ist, dass es legt die PartitionIDs (Elemente, die nach S durch Komma getrennt) für die Tasten-Zeichen (-en) für einen bestimmten Schlüsselanhänger.
Die tatsächliche partitionID, ermöglicht die Mitgestaltung ist
apple:
.Ich bin nicht bewusst, was
apple-tool:
macht, wie es ist nicht dokumentiert, aber es wurde es nach dem importieren des Schlüssels mitsecurity import
also ich bin es zu halten, um zu vermeiden, brechen die Leute, die kopieren-einfügen auf den Befehl.Diese änderung wurde eingeführt mit Mac-OS Sierra und ist nicht dokumentiert (oder ich zumindest nicht finden konnte, Dokumentation). So Okt 16 die man-Seite für die Sicherheits-noch die Liste nicht mit diesem Befehl.
Weitere Informationen finden Sie in diesem bug-report - http://www.openradar.me/28524119
InformationsquelleAutor der Antwort Ilian Iliev
Für diejenigen, die haben dieses Problem mit Travis oder andere CI, müssen Sie
codesign
im Anwendungs-id-Liste.security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k keychainPass keychainName
P. S:
Ich bin mit keychainName.Schlüsselanhänger (hinzufügen
.keychain
)InformationsquelleAutor der Antwort Rafael Machado
Den Befehl aus diese Antwort nur freigeschaltet, der Schlüsselanhänger für mich, aber ich hatte immer noch den UI-gefragt werden, ob die aktuelle Anwendung verwenden kann, der Schlüssel.
Ich verhindert, die prompt wie diese:
Gehen Sie auf die keychain, Keychain Access, Doppel-klicken Sie auf alle Schlüssel vorhanden, und in der Registerkarte Access Control, überprüfen Sie " Zulassen, dass alle Anwendungen für den Zugriff auf dieses Element.
War ich in der Lage, laden Sie die neue keychain-Datei dann auf meinem Jenkins build-server, wo es freigeschaltet wird von der Keychains and Provisioning Profiles Plugin. Die bauen jetzt erfolgreich signieren.
InformationsquelleAutor der Antwort Wouter
Aus irgendeinem Grund die
security set-key-partition-list
funktionierte nicht für mich.Ich löste es, indem Sie die option-A beim importieren des Zertifikats in den Schlüsselbund:
Gibt es keine Notwendigkeit zu verwenden die
security set-key-partition-list
danach.Diese option ermöglicht es jeder Anwendung, um den Zugriff auf den importierten Schlüssel ohne Warnung. Damit verhindert er, dass die Aufforderung von der Anzeige. Beachten Sie, dass es unsicher ist, da der Schlüssel nicht geschützt werden, sondern je nach Ihren build-Kontext, es könnte helfen.
Oben auf, dass der Schlüsselbund Hinzugefügt werden müssen, um die such-Liste:
Dann der Schlüsselanhänger sollte nun entsperrt sein. Ansonsten wird eine Eingabeaufforderung angezeigt, die für das Schlüsselbund-Kennwort wird angezeigt:
Schließlich die auto-lock-timeout deaktiviert werden soll. Dies ist im Falle der build ist ziemlich lang und der Schlüsselbund wieder sperrt sich:
InformationsquelleAutor der Antwort Ika
Nach versuchen, viele verschiedene Lösungen, was für mich gearbeitet war einfach ändern Sie das Kennwort von meinem Schlüsselbund.
InformationsquelleAutor der Antwort arnoldbird
Auch wenn Sie Ihre app zu bauen, die mehr als 5 Minuten - Sie können aus benutzerdefinierten Schlüsselanhänger-lock-timer und erhalten -1=ffffffff Fehler. So deaktivieren Sie die Sperre-keychain als tmp-Lösung.
InformationsquelleAutor der Antwort sacred