Zum Inhalt springen
ecdsa.com
OpenSSH ssh-keygen -Y verify (SSHSIG)SSH

Fehlermeldung

Signature verification failed: incorrect signature

Auch ausgegeben als

  • Couldn't verify signature: namespace does not match
  • Could not verify signature.

Ein Principal, der in der Allowed-Signers-Datei nicht für diesen Schlüssel aufgeführt ist, scheitert nur mit „Could not verify signature.“ (ohne vorangehende Detailzeile).

OpenSSH ssh-keygen -Y verify (SSHSIG) — also used by Git for SSH-signed commits

Was der Fehler bedeutet

`ssh-keygen -Y verify` hat eine SSHSIG-Signatur geprüft, und die kryptografische Prüfung ist fehlgeschlagen: Die von der Standardeingabe gelesenen Daten sind nicht exakt das, was signiert wurde, oder die Signatur wurde mit einem anderen Schlüssel erstellt. SSH-Signaturen binden außerdem einen Namespace (`file`, `git`, `email` …); eine Signatur, die unter einem anderen Namespace geprüft wird, scheitert schon vor der kryptografischen Prüfung mit „namespace does not match“. Auf jeden Fehler folgt „Could not verify signature.“ als weitere Zeile.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Exakte Bytes mit dem richtigen Namespace prüfen

    Leite die Originaldatei per Pipe in `ssh-keygen -Y verify` und verwende den Namespace, mit dem signiert wurde. `find-principals` zeigt, welcher Identität der Schlüssel zugeordnet ist.

    bash
    # Verify exactly the bytes that were signed, with the namespace used at signing time
    ssh-keygen -Y verify -f allowed_signers -I release@example.com -n file -s release.txt.sig < release.txt
    # Which principal does the allowed_signers file map this signature's key to?
    ssh-keygen -Y find-principals -f allowed_signers -s release.txt.sig
  2. 2.

    Kryptografie und Vertrauen getrennt prüfen

    `check-novalidate` prüft die Signatur, ohne die Allowed-Signers-Datei heranzuziehen. Besteht sie diese Prüfung, liegt das Problem in der Zuordnung der Identität; scheitert sie, sind die Daten oder die Signatur falsch.

    bash
    ssh-keygen -Y check-novalidate -n file -s release.txt.sig < release.txt   # signature valid at all (no trust check)?

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen