# security — Schlüsselbund und Zertifikate verwalten

> Praxis-Guide zum macOS-Tool security — Passwörter, Zertifikate, Signier-Identitäten und Schlüsselbünde bequem im Terminal verwalten.

Source: https://www.jpkc.com/db/cheatsheets/macos/security/

<!-- PROSE:intro -->
Das `security`-Kommando ist die Kommandozeilen-Schnittstelle zu den macOS-Schlüsselbünden (Keychains). Damit fragst du Passwörter, Zertifikate, Schlüssel und Signier-Identitäten ab, legst sie an oder löschst sie – alles aus dem Terminal heraus, ohne die grafische Schlüsselbundverwaltung zu öffnen. Das macht es ideal für Skripte, CI-Builds und Code-Signing-Workflows. Dieser Guide zeigt dir die wichtigsten Unterbefehle für den Alltag: vom Schlüsselbund-Handling über Passwort- und Zertifikatsverwaltung bis zu Code-Signierung und Vertrauensketten.
<!-- PROSE:intro:end -->

## Schlüsselbund-Verwaltung

`security list-keychains` — Listet alle Schlüsselbünde in der Suchliste auf.

```bash
security list-keychains
```

`security default-keychain` — Zeigt den Standard-Schlüsselbund an.

```bash
security default-keychain
```

`security create-keychain <name>` — Erstellt einen neuen Schlüsselbund.

```bash
security create-keychain mykeys.keychain-db
```

`security delete-keychain <name>` — Löscht einen Schlüsselbund.

```bash
security delete-keychain mykeys.keychain-db
```

`security lock-keychain` — Sperrt den Standard-Schlüsselbund.

```bash
security lock-keychain
```

`security unlock-keychain <name>` — Entsperrt einen Schlüsselbund (fragt das Passwort ab).

```bash
security unlock-keychain login.keychain-db
```

## Passwörter

`security find-generic-password -s '<service>' -w` — Findet ein Passwort über den Dienstnamen und gibt es aus.

```bash
security find-generic-password -s 'MyApp' -w
```

`security find-generic-password -a '<account>' -s '<service>' -w` — Findet ein Passwort über Konto und Dienst.

```bash
security find-generic-password -a 'admin' -s 'MyDatabase' -w
```

`security add-generic-password -a '<account>' -s '<service>' -w '<password>'` — Fügt dem Schlüsselbund ein Passwort hinzu.

```bash
security add-generic-password -a 'admin' -s 'MyDatabase' -w 'secret123'
```

`security delete-generic-password -s '<service>'` — Löscht ein Passwort aus dem Schlüsselbund.

```bash
security delete-generic-password -s 'MyApp'
```

`security find-internet-password -s '<server>' -w` — Findet ein Internet-Passwort (von Browsern usw. gespeichert).

```bash
security find-internet-password -s 'github.com' -w
```

`security add-internet-password -a '<account>' -s '<server>' -w '<password>'` — Fügt dem Schlüsselbund ein Internet-Passwort hinzu.

```bash
security add-internet-password -a 'user@example.com' -s 'mail.example.com' -w 'pass123'
```

## Zertifikate

`security find-certificate -a` — Listet alle Zertifikate im Standard-Schlüsselbund auf.

```bash
security find-certificate -a
```

`security find-certificate -c '<name>' -p` — Findet ein Zertifikat über den Common Name und exportiert es (PEM-Format).

```bash
security find-certificate -c 'Apple Development' -p
```

`security import <file> -k <keychain>` — Importiert ein Zertifikat oder einen Schlüssel in einen Schlüsselbund.

```bash
security import cert.p12 -k login.keychain-db
```

`security import <file> -k <keychain> -T /usr/bin/codesign` — Importiert das Zertifikat und erlaubt codesign dessen Nutzung.

```bash
security import cert.p12 -k login.keychain-db -T /usr/bin/codesign
```

`security export -k <keychain> -t certs -o <file>` — Exportiert alle Zertifikate aus einem Schlüsselbund.

```bash
security export -k login.keychain-db -t certs -o certs.pem
```

## Code-Signierung

`security find-identity -v -p codesigning` — Listet gültige Code-Signing-Identitäten auf.

```bash
security find-identity -v -p codesigning
```

`security find-identity -v` — Listet alle gültigen Identitäten auf.

```bash
security find-identity -v
```

`security cms -D -i <file>` — Dekodiert eine signierte CMS-Nachricht.

```bash
security cms -D -i signed.p7
```

## Vertrauen und Verifizierung

`security verify-cert -c <cert>` — Prüft die Vertrauenskette eines Zertifikats.

```bash
security verify-cert -c cert.pem
```

`security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain <cert>` — Fügt systemweit ein vertrauenswürdiges Stammzertifikat hinzu.

```bash
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca-cert.pem
```

`security remove-trusted-cert -d <cert>` — Entfernt ein vertrauenswürdiges Zertifikat.

```bash
sudo security remove-trusted-cert -d ca-cert.pem
```

`security dump-trust-settings` — Zeigt die Vertrauenseinstellungen für Zertifikate an.

```bash
security dump-trust-settings
```

<!-- PROSE:outro -->
## Fazit

Das `security`-Tool bündelt den kompletten Schlüsselbund-Zugriff in einem einzigen Kommando und ist damit unverzichtbar, sobald Passwörter, Zertifikate oder Signier-Identitäten skriptgesteuert verwaltet werden müssen – etwa in CI-Pipelines, die App-Bundles signieren. Geh aber bewusst mit den heiklen Stellen um: `find-generic-password -w` und `find-internet-password -w` geben das Passwort im **Klartext** auf der Konsole aus – es landet damit schnell in der Shell-History oder in CI-Logs. `delete-keychain` und die `delete-*-password`-Befehle sind unwiderruflich, und ein entsperrter Schlüsselbund bleibt offen, bis du ihn wieder sperrst. Sperre Schlüsselbünde nach getaner Arbeit also wieder und gib `-w '<password>'` möglichst über eine Variable statt im Befehl direkt an.

## Weiterführende Links

- [Security Framework – Apple Developer](https://developer.apple.com/documentation/security) – offizielle Apple-Dokumentation zu Schlüsselbund, Zertifikaten und Vertrauen (englisch)
- [Keychain Services – Apple Developer](https://developer.apple.com/documentation/security/keychain-services) – Hintergründe zur Architektur der macOS-Schlüsselbünde (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [caffeinate](https://www.jpkc.com/db/cheatsheets/macos/caffeinate/) – verhindert, dass der Mac in den Ruhezustand wechselt
- [defaults](https://www.jpkc.com/db/cheatsheets/macos/defaults/) – liest und schreibt macOS-Benutzereinstellungen
- [diskutil](https://www.jpkc.com/db/cheatsheets/macos/diskutil/) – verwaltet Festplatten, Volumes und Partitionen

