2008-11-08 31 views
139

Có cách nào dễ dàng để xác minh rằng khóa riêng đã cho khớp với khóa công khai đã cho không? Tôi có một vài tệp * .pub và một vài tệp * .key và tôi cần kiểm tra xem tệp nào đi kèm.Làm cách nào để bạn kiểm tra cặp khóa DSA công khai/riêng tư?

Một lần nữa, đây là các tệp pub/khóa, DSA.

Tôi thực sự muốn một lớp lót của một số loại ...

Trả lời

222

Tôi tìm thấy một cách mà dường như làm việc tốt hơn cho tôi:

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

rằng lệnh sẽ ra khóa công cộng để khóa riêng nhất định, như vậy thì chỉ cần so sánh đầu ra cho mỗi file * .pub.

+0

chính xác điều này làm gì? Tại sao ssh? – sammiwei

+2

có lẽ vì anh ấy đang sử dụng cặp khóa cho xác thực ssh – etarion

+2

Trong trường hợp của tôi, máy chủ công việc trung tâm có một vài tệp tin 'id_rsa.pub.blahhost' và tôi không biết tệp nào khớp với khóa riêng tư id_rsa' duy nhất & tôi thiết lập scp không cần mật khẩu để tôi có thể di chuyển khỏi các trang web cũ. Tạo cặp khóa mới không phải là một lựa chọn; Tôi đã có chìa khóa của tôi thiết lập tốt và sẽ không mess lên đó. –

0

Mã hóa một cái gì đó với khóa công khai, và xem những private key giải mã nó.

code project article bởi không ai khác ngoài Jeff Atwood thực hiện một trình bao bọc được đơn giản hóa xung quanh các lớp mã hóa .NET. Giả sử các khóa này được tạo ra để sử dụng với RSA, hãy sử dụng lớp không đối xứng với khóa công khai của bạn để mã hóa, và cùng với khóa riêng của bạn để giải mã.

+0

Tôi tìm kiếm một cái gì đó đơn giản hơn một chút. Nói, một lớp vỏ một hoặc tương tự. Tôi đang trên Linux, và có những thứ bình thường như openssl được cài đặt. – Loki

+3

Điều đó gần như hữu ích khi nói thêm một khóa công khai vào tệp authorized_keys của bạn và sử dụng ssh để xem khóa riêng nào hoạt động. Phương pháp này hoạt động, nhưng nó là một nỗi đau. –

12

Giả sử bạn có khóa công khai trong chứng chỉ X.509, và giả sử họ là chìa khóa RSA, sau đó cho mỗi khóa công khai, làm

openssl x509 -in certfile -modulus -noout 

Đối với mỗi khóa riêng, làm

openssl rsa -in keyfile -modulus -noout 

Sau đó, kết hợp các phím bằng mô đun.

45

Đối phím DSA, sử dụng

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

để in các khóa công khai, sau đó

openssl dsa -in dsa.key -modulus -noout 

để hiển thị các khóa công khai tương ứng với một khóa riêng, sau đó so sánh chúng.

6

Xóa khóa công khai và tạo khóa mới từ khóa riêng tư. Giữ chúng trong các thư mục riêng biệt hoặc sử dụng quy ước đặt tên để giữ chúng thẳng.

+2

Câu hỏi đặt ra là hỏi cách xác minh và thiết bị mà chúng tôi sẽ xác minh nó có thể không có cơ sở để tạo một thiết bị mới. – ArmenB

48

tôi luôn so sánh MD5 của các module sử dụng các lệnh này:

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 

Nếu băm phù hợp, sau đó hai tập tin đi lại với nhau.

+0

Không hoạt động cho các khóa DSA – thomasrutter

-1

Chỉ cần sử dụng puttygen và tải khóa cá nhân của bạn vào đó. Cung cấp các tùy chọn khác nhau, ví dụ: xuất khóa công khai.

+0

điều này không cho phép kiểm tra cặp khóa công khai riêng – MatFiz

9

Vui lòng cung có thể được thực hiện dễ dàng hơn với diff:

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

Điều kỳ lạ duy nhất là diff nói gì nếu các tập tin là như nhau, do đó bạn sẽ chỉ được thông báo nếu công cộng và tư nhân don 't phù hợp.

+2

Để có được kết quả đầu ra khi các tệp phù hợp: 'diff -s' – Roland

+0

Đây là một câu trả lời tuyệt vời. (1) 'diff-qs' trả về một câu trả lời đơn giản/giống hệt nhau (2), bạn nên xóa chú thích trong tệp khóa công khai trước khi chạy phần khác – emory

1

Tất cả câu trả lời ở trên giả định rằng khóa riêng đã cho - bạn không biết gì và muốn tìm hiểu xem nó có khớp với khóa công khai đã cho không - KHÔNG CÓ PASSPHRASE.Nếu khóa riêng có cụm từ mật khẩu, sau đó cả hai

ssh-keygen -y -f PRIVATEKEY

openssl (RSA hoặc DSA) -in PRIVATEKEY -modulus -noout

yêu cầu cụm mật khẩu. Nếu bạn có khóa riêng tư không xác định, bạn không biết cho dù cụm mật khẩu đó có phải là cụm mật khẩu hay không - hãy nói một mình cụm từ mật khẩu là gì nếu khóa có khóa. Vì vậy, thực tế, nó có giá trị cố gắng các lệnh trên, nhưng nếu họ sau đó yêu cầu một cụm mật khẩu, bạn đang mắc kẹt: bạn không thể giải nén khóa công khai và nó là mô đun để phù hợp với trường thứ hai trên tập tin khóa công khai . Có ai biết cách làm tròn này không?

+0

Điều này đúng. Hơn nữa, nếu tệp khóa bị hỏng, ssh-keygen sẽ yêu cầu cụm từ mật khẩu mà không được mong đợi là một (tôi đang tìm cách xác minh cặp khóa công khai/riêng tư có giá trị nói chung) – Curt

2

Nếu bạn đang dùng Windows và muốn sử dụng một giao diện đồ họa, với puttygen bạn có thể nhập khóa riêng của bạn vào nó:

enter image description here

Sau khi nhập, bạn có thể lưu khóa công khai của nó và so sánh nó với bạn.

0

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

+0

Tôi đoán bạn nên xây dựng, bài đăng của bạn thực sự gần với https://stackoverflow.com/a/22595408/3102264 – mpromonet

Các vấn đề liên quan