Làm thế nào để trích xuất khóa công khai bằng OpenSSL?


120

Lệnh sau tạo một tệp chứa cả khóa công khai và khóa riêng tư:

openssl genrsa -des3 -out privkey.pem 2048

Nguồn: tại đây

Với OpenSSL, khóa cá nhân cũng chứa thông tin khóa công khai, vì vậy khóa công khai không cần phải được tạo riêng

Làm cách nào chúng tôi có thể trích xuất khóa công khai từ tệp privkey.pem?

Cảm ơn.


Công cụ trực tuyến này rất thú vị 8gwifi.org/pempublic.jsp
anish

Câu trả lời:


188
openssl rsa -in privkey.pem -pubout > key.pub

Điều đó ghi khóa công khai vào key.pub


23
Luôn luôn tốt hơn là sử dụng tùy chọn nội bộ để thực hiện việc này -out:, ví dụ: openssl rsa -in privkey.pem -pubout -out key.pubthay vì chuyển hướng stdout đến một tệp.
Juan Antonio

138

Mặc dù, kỹ thuật trên hoạt động đối với trường hợp chung, nhưng nó không hoạt động trên các tệp PEM của Amazon Web Services (AWS).

Tôi đã tìm thấy trong tài liệu AWS, lệnh sau hoạt động: ssh-keygen -y

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

chỉnh sửa Cảm ơn @makenova về dòng hoàn chỉnh:

ssh-keygen -y -f key.pem > key.pub

38
Cảm ơn. Đây là muốn tôi cần. Để bỏ qua lời nhắc, bạn có thể sử dụngssh-keygen -y -f key.pem > key.pub
makenova

5
Đây là câu trả lời chính xácssh-keygen -y -f key.pem
Justin

1
này là yêu cầu tôi cho một cụm mật khẩu, nhưng tôi không đặt bất kỳ cụm từ mật khẩu
kavain

1
@makenova Thao tác này sẽ tạo lại khóa trong key.pem, điều này có thể ngăn bạn đăng nhập vào các trường hợp yêu cầu khóa đó!
SubmittedDenied

Nếu bạn gặp sự cố tương tự như @kavain, nơi nó yêu cầu bạn nhập cụm mật khẩu mà bạn không đặt và bạn đang sử dụng khóa của mình ssh -i, hãy đảm bảo rằng bạn đang liên kết với khóa riêng tư của mình ở đó, không phải khóa công khai
aexl

5

Đối với những người quan tâm đến chi tiết - bạn có thể xem nội dung bên trong tệp khóa công khai (được tạo như giải thích ở trên), bằng cách thực hiện: -

openssl rsa -noout -text -inform PEM -in key.pub -pubin

hoặc đối với tệp khóa cá nhân, điều này: -

openssl rsa -noout -text -in key.private

xuất ra dưới dạng văn bản trên bảng điều khiển các thành phần thực tế của khóa (mô đun, số mũ, số nguyên tố, ...)


2

Nếu bạn đang tìm cách sao chép .pemcặp khóa Amazon AWS vào một khu vực khác, hãy làm như sau:

openssl rsa -in .ssh/amazon-aws.pem -pubout > .ssh/amazon-aws.pub

Sau đó

aws ec2 import-key-pair --key-name amazon-aws --public-key-material '$(cat .ssh/amazon-aws.pub)' --region us-west-2

2
Đầu ra khóa công khai bởi opensslđược kẹp trong các tiêu đề PEM, mà bạn sẽ phải xóa trước khi AWS CLI chấp nhận khóa.
JP

2

Đối với AWS nhập khóa công khai hiện có,

  1. Xuất từ ​​.pem đang làm việc này ... (trên linux)

    openssl rsa -in ./AWSGeneratedKey.pem -pubout -out PublicKey.pub
    

Điều này sẽ tạo ra một tệp nếu bạn mở trong trình soạn thảo văn bản trông giống như thế này ...

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/8y3uYCQxSXZ58OYceG
A4uPdGHZXDYOQR11xcHTrH13jJEzdkYZG8irtyG+m3Jb6f9F8WkmTZxl+4YtkJdN
9WyrKhxq4Vbt42BthadX3Ty/pKkJ81Qn8KjxWoL+SMaCGFzRlfWsFju9Q5C7+aTj
eEKyFujH5bUTGX87nULRfg67tmtxBlT8WWWtFe2O/wedBTGGQxXMpwh4ObjLl3Qh
bfwxlBbh2N4471TyrErv04lbNecGaQqYxGrY8Ot3l2V2fXCzghAQg26Hc4dR2wyA
PPgWq78db+gU3QsePeo2Ki5sonkcyQQQlCkL35Asbv8khvk90gist4kijPnVBCuv
cwIDAQAB
-----END PUBLIC KEY-----
  1. Tuy nhiên AWS sẽ KHÔNG chấp nhận tệp này.

    Bạn phải loại bỏ -----BEGIN PUBLIC KEY----------END PUBLIC KEY-----khỏi tệp. Lưu nó và nhập và nó sẽ hoạt động trong AWS.


4
và nếu bạn cần chuyển đổi định dạng này để ssh-rsa AAAAB3NzaC1y....chạy:ssh-keygen -f PublicKey.pub -i -mPKCS8
Rafael Milewski
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.