it-swarm.com.de

Wie testen Sie ein öffentliches / privates DSA-Schlüsselpaar?

Gibt es eine einfache Möglichkeit, zu überprüfen, ob ein bestimmter privater Schlüssel mit einem bestimmten öffentlichen Schlüssel übereinstimmt? Ich habe ein paar * .pub- und ein paar * .key-Dateien, und ich muss prüfen, welche zu welchen gehören.

Auch dies sind Pub/Key-Dateien, DSA.

Ich würde wirklich einen Einzeiler bevorzugen ...

158
Loki

Ich habe einen Weg gefunden, der für mich besser zu funktionieren scheint:

ssh-keygen -y -f <private key file>

dieser Befehl gibt den öffentlichen Schlüssel für den angegebenen privaten Schlüssel aus. Vergleichen Sie dann einfach die Ausgabe mit jeder * .pub-Datei.

248
Loki

Ich vergleiche immer einen MD5-Hash des Moduls mit diesen Befehlen:

Certificate: openssl x509 -noout -modulus -in server.crt | openssl md5
Private Key: openssl rsa -noout -modulus -in server.key | openssl md5
CSR: openssl req -noout -modulus -in server.csr | openssl md5

Stimmen die Hashes überein, werden diese beiden Dateien zusammengeführt.

53
Robert

Verwenden Sie für DSA-Schlüssel

 openssl dsa -pubin -in dsa.pub -modulus -noout

um dann die öffentlichen Schlüssel zu drucken

 openssl dsa -in dsa.key -modulus -noout

um die öffentlichen Schlüssel anzuzeigen, die einem privaten Schlüssel entsprechen, vergleichen Sie sie.

47

Angenommen, Sie haben die öffentlichen Schlüssel in x.509-Zertifikaten und nehmen an, dass es sich um RSA-Schlüssel handelt, dann tun Sie dies für jeden öffentlichen Schlüssel

    openssl x509 -in certfile -modulus -noout

Tun Sie dies für jeden privaten Schlüssel

    openssl rsa -in keyfile -modulus -noout

Passen Sie dann die Tasten nach Modul an.

18

Die Überprüfung kann mit diff vereinfacht werden:

diff <(ssh-keygen -y -f <private_key_file>) <public key file>

Das einzig Seltsame ist, dass diff nichts sagt, wenn die Dateien gleich sind. Sie werden also nur informiert, wenn public und private nicht übereinstimmen.

14
John D.

Löschen Sie die öffentlichen Schlüssel und generieren Sie neue aus den privaten Schlüsseln. Bewahren Sie sie in separaten Verzeichnissen auf, oder verwenden Sie eine Namenskonvention, um sie gerade zu halten.

7
Bill the Lizard

Wenn Sie unter Windows arbeiten und eine grafische Benutzeroberfläche verwenden möchten, können Sie mit puttygen Ihren privaten Schlüssel in diese importieren:

enter image description here

Nach dem Import können Sie den öffentlichen Schlüssel speichern und mit Ihrem vergleichen.

4
Zac

Geben Sie den folgenden Befehl ein, um zu überprüfen, ob ein privater Schlüssel und ein öffentlicher Schlüssel eine übereinstimmende Menge (identisch) oder keine übereinstimmende Menge (unterschiedlich) im Verzeichnis $ USER/.ssh sind. Der Befehl cut verhindert, dass der Kommentar am Ende der Zeile im öffentlichen Schlüssel verglichen wird, sodass nur der Schlüssel verglichen werden kann.

ssh-keygen -y -f ~/.ssh/id_rsa | diff -s - <(cut -d ' ' -f 1,2 ~/.ssh/id_rsa.pub)

Die Ausgabe sieht wie eine dieser Zeilen aus.

Files - and /dev/fd/63 are identical

Files - and /dev/fd/63 differ

Ich habe ein Shell-Skript geschrieben, mit dem Benutzer die Dateiberechtigung für ihre ~/.ssh/-Dateien und den passenden Schlüsselsatz überprüfen. Es löst meine Probleme mit der Einrichtung von ssh durch Benutzer. Es kann dir helfen. https://github.com/BradleyA/docker-security-infrastructure/tree/master/ssh

Hinweis: Meine vorherige Antwort (im März 2018) funktioniert nicht mehr mit den neuesten Versionen von openssh. Vorherige Antwort: diff -qs <(ssh-keygen -yf ~/.ssh/id_rsa) <(cut -d '' -f 1,2 ~/.ssh/id_rsa.pub)

1
Bradley Allen

Wenn es nichts zurückgibt, stimmen sie überein mit:

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost
0
RoutesMaps.com

Verschlüsseln Sie etwas mit dem öffentlichen Schlüssel und sehen Sie, welcher private Schlüssel ihn entschlüsselt.

Dieser Code-Projektartikel von keinem anderen als Jeff Atwood implementiert einen vereinfachten Wrapper um die .NET-Kryptoklassen. Angenommen, diese Schlüssel wurden für die Verwendung mit RSA erstellt, verwenden Sie die asymmetrische Klasse mit Ihrem öffentlichen Schlüssel zum Verschlüsseln und die gleiche mit Ihrem privaten Schlüssel zum Entschlüsseln.

0
Mitch Wheat