วิธีแยกคีย์สาธารณะโดยใช้ OpenSSL


120

คำสั่งต่อไปนี้สร้างไฟล์ที่มีทั้งคีย์สาธารณะและคีย์ส่วนตัว:

openssl genrsa -des3 -out privkey.pem 2048

ที่มา: ที่นี่

ด้วย OpenSSL คีย์ส่วนตัวจะมีข้อมูลคีย์สาธารณะด้วยดังนั้นคีย์สาธารณะจึงไม่จำเป็นต้องสร้างแยกต่างหาก

เราจะแยกคีย์สาธารณะจากไฟล์ privkey.pem ได้อย่างไร?

ขอบคุณ


เครื่องมือออนไลน์นี้เจ๋ง8gwifi.org/pempublic.jsp
anish

คำตอบ:


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

ที่เขียนคีย์สาธารณะไป key.pub


23
ควรใช้ตัวเลือกภายในเพื่อทำสิ่งนี้ -outเสมอเช่น: openssl rsa -in privkey.pem -pubout -out key.pubแทนที่จะเปลี่ยนเส้นทาง stdout ไปยังไฟล์
Juan Antonio

138

แม้ว่าเทคนิคข้างต้นจะใช้ได้กับกรณีทั่วไป แต่ก็ใช้ไม่ได้กับไฟล์ PEM ของ Amazon Web Services (AWS)

ฉันพบในเอกสาร AWS คำสั่งต่อไปนี้ใช้งานได้: ssh-keygen -y

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

แก้ไข ขอบคุณ @makenova สำหรับบรรทัดที่สมบูรณ์:

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

38
ขอบคุณ นี่คือความต้องการที่ฉันต้องการ หากต้องการข้ามข้อความแจ้งคุณสามารถใช้ssh-keygen -y -f key.pem > key.pub
makenova

5
นี่คือคำตอบที่ถูกต้องssh-keygen -y -f key.pem
จัสติน

1
นี่กำลังขอข้อความรหัสผ่าน แต่ฉันไม่ได้ใส่ข้อความรหัสผ่าน
kavain

1
@makenova สิ่งนี้จะสร้างคีย์ขึ้นมาkey.pemใหม่ซึ่งอาจป้องกันไม่ให้คุณเข้าสู่อินสแตนซ์ที่ต้องใช้คีย์นั้น!
ส่งแล้ว

หากคุณประสบปัญหาเช่นเดียวกับ @kavain ซึ่งจะขอให้คุณป้อนข้อความรหัสผ่านที่คุณไม่ได้ใส่และคุณกำลังใช้รหัสของssh -iคุณอยู่ตรวจสอบให้แน่ใจว่าคุณกำลังเชื่อมโยงกับคีย์ส่วนตัวของคุณที่นั่นไม่ใช่รหัสสาธารณะ
aexl

5

สำหรับผู้ที่สนใจรายละเอียด - คุณสามารถดูว่ามีอะไรอยู่ในไฟล์คีย์สาธารณะ (สร้างขึ้นตามที่อธิบายไว้ข้างต้น) โดยทำดังนี้: -

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

หรือสำหรับไฟล์คีย์ส่วนตัวสิ่งนี้: -

openssl rsa -noout -text -in key.private

ซึ่งแสดงผลเป็นข้อความบนคอนโซลส่วนประกอบที่แท้จริงของคีย์ (โมดูลัสเลขชี้กำลังปริม ... )


2

หากคุณกำลังมองหาวิธีคัดลอก.pemคีย์คู่ของAmazon AWS ไปยังภูมิภาคอื่นให้ทำดังต่อไปนี้:

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

แล้วก็

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

2
เอาต์พุตคีย์สาธารณะโดยopensslจะถูกคั่นด้วยส่วนหัว PEM ซึ่งคุณจะต้องลบออกก่อนที่ AWS CLI จะยอมรับคีย์
JP

2

สำหรับ AWS การนำเข้าคีย์สาธารณะที่มีอยู่

  1. ส่งออกจาก. pem ทำสิ่งนี้ ... (บน linux)

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

สิ่งนี้จะสร้างไฟล์ที่หากคุณเปิดในโปรแกรมแก้ไขข้อความที่มีลักษณะเช่นนี้ ...

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/8y3uYCQxSXZ58OYceG
A4uPdGHZXDYOQR11xcHTrH13jJEzdkYZG8irtyG+m3Jb6f9F8WkmTZxl+4YtkJdN
9WyrKhxq4Vbt42BthadX3Ty/pKkJ81Qn8KjxWoL+SMaCGFzRlfWsFju9Q5C7+aTj
eEKyFujH5bUTGX87nULRfg67tmtxBlT8WWWtFe2O/wedBTGGQxXMpwh4ObjLl3Qh
bfwxlBbh2N4471TyrErv04lbNecGaQqYxGrY8Ot3l2V2fXCzghAQg26Hc4dR2wyA
PPgWq78db+gU3QsePeo2Ki5sonkcyQQQlCkL35Asbv8khvk90gist4kijPnVBCuv
cwIDAQAB
-----END PUBLIC KEY-----
  1. อย่างไรก็ตาม AWS จะไม่ยอมรับไฟล์นี้

    คุณต้องถอด-----BEGIN PUBLIC KEY-----และ-----END PUBLIC KEY-----ออกจากไฟล์ บันทึกและนำเข้าและควรใช้งานได้ใน AWS


4
และหากคุณต้องการแปลงรูปแบบนี้เพื่อssh-rsa AAAAB3NzaC1y....รัน:ssh-keygen -f PublicKey.pub -i -mPKCS8
Rafael Milewski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.