Ich versuche, eine Signatur eines Pakets auf der FreeBSD-Paketwebsite zu überprüfen
wget http://pkg.freebsd.org/FreeBSD:11:amd64/latest/digests.txz
tar xf digests.txz
Dies gibt drei Dateien: digests
, digests.pub
digests.sig
Ich nehme an, dass digests.sig
eine Signatur für die Datei ist digests
mit digests.pub
als der öffentlichen Schlüssel. Aber ich habe versucht, das zu bestätigen:
openssl dgst -verify digests.pub -signature digests.sig digests
und bekam die Nachricht
Verification Failure
Ich nehme an, ich habe etwas falsch gemacht - kann mir jemand sagen, was ich vermisse?
EDIT: Basierend auf einer Jagd durch den Quellcode, ich denke , die wichtige Funktion zu finden ist hier , genannt , rsa_verify_cert_cb
welche Anrufe RSA_verify
von der OpenSSL - Bibliothek. Aber ich habe nicht herausgefunden, was eingespeist wird oder ob es möglich ist, diese Funktion mit den openssl
Befehlszeilentools aufzurufen .
openssl rsautl -pubin -inkey digests.pub -verify -in digests.sig -asn1parse
scheint jedoch auch nicht übereinzustimmen .sha256sum digests
Antworten:
Da es im Internet kein "How To" für die manuelle Überprüfung von FreeBSD-Paketen gibt, habe ich Folgendes herausgefunden.
Der Trick ist, dass die Oktettzeichenfolge in der
openssl rsautl
Ausgabe tatsächlich ein Hash der Zeichenfolge ist, die SHA256-Hash einer Datei ist.Laden Sie beispielsweise current herunter
http://pkg.freebsd.org/FreeBSD:12:amd64/latest/digests.txz
, extrahieren Sie es und gehen Sie wie folgt vor:Methode 1 (Einzeiler mit
openssl dgst
)Hier ist es wichtig,
tr -d '\n'
eine neue Zeile aus der Standardeingabe zu entfernen, damit sie nicht in der Zeichenfolgeneingabe für enthalten istopenssl dgst
.Dieser Befehl sollte ausgegeben werden
Verified OK
.Methode 2 (visueller Vergleich der Oktettzeichenfolge aus der .sig-Datei mit manuell generiertem Hash)
Verwenden Sie das OpenSSL-Dienstprogramm, um Inhalte aus digests.sig zu sichern
Hier können Sie sehen, dass das eingebettete Objekt ein SHA256-Hash ist und sein Wert ist
acc6acbecd5e61636282624bba77376e0bfaeaef6e1021016264062fd0f16022
.Berechnen Sie nun SHA256 der Datei
digests
:echo
Befehl und vergleichen Sie sie mit dem vonopenssl rsautl
:Beachten Sie, wie der Wert aus Schritt 3 mit dem Wert aus Schritt 1 übereinstimmt, sodass die Datei
digests
gültig ist.quelle
Diese Nachricht besagt, dass der öffentliche Schlüssel nicht mit der heruntergeladenen Datei übereinstimmt. Laut der Manpage für dgst -verify Dateiname überprüfen Sie die Signatur mit dem öffentlichen Schlüssel in "Dateiname". Die Ausgabe ist entweder "Verification OK" oder "Verification Failure". Die wahrscheinlichste Ursache ist, dass die Datei während des Downloads beschädigt wurde. Ich würde versuchen, es erneut herunterzuladen, und wenn die Prüfung weiterhin fehlschlägt, ist dies ein Zeichen für einen kompromittierten Download-Link (aber da es von der freebsd-Website stammt, würde ich vermuten, dass es sich lediglich um einen Download-Fehler handelt. Selbst dann würde ich das neue überprüfen nur um auf der sicheren Seite zu sein). Wenn Sie eine langsame / unzuverlässige Internetverbindung haben, kann es einige Versuche dauern, bis sie richtig heruntergeladen ist. Wenn Sie jemals nach Informationen zu Befehlen suchen müssen,
quelle