คีย์ SSH เป็นเพียงคู่คีย์ RSA, DSA หรือ ECDSA ธรรมดา รหัสคู่ที่สร้างโดย OpenSSH นั้นสามารถใช้งานได้โดย OpenSSL และโปรแกรมอื่น ๆ ส่วนใหญ่
( .pub
เอาต์พุตไฟล์โดยssh-keygen
อยู่ในรูปแบบเฉพาะของ OpenSSH แต่ไม่เกี่ยวข้องเนื่องจากไฟล์ "ส่วนตัว" มีทั้งกุญแจส่วนตัวและกุญแจสาธารณะอยู่แล้ว)
ซอฟต์แวร์ SSH อื่นอาจมีรูปแบบการจัดเก็บของตนเองเช่นRFC 4716หรือPPKของ PuTTY แต่จะเก็บข้อมูล RSA / DSA / ECDSA เดียวกัน
X.509 (ใช้โดย SSL, S / MIME) มีความซับซ้อนกว่าเล็กน้อย: คีย์ "ส่วนตัว" ยังคงเหมือนเดิม แต่แทนที่จะเป็นไฟล์กุญแจสาธารณะเปลือยคุณมี "ใบรับรอง" - โครงสร้าง ASN.1 ที่มี รหัสสาธารณะชื่อเรื่องและผู้ออกวันที่ที่มีผลบังคับใช้ ในใบรับรอง X.509 v3 จะมีนามสกุลเช่น "การใช้คีย์" และ "ชื่อหัวเรื่องสำรอง" ใบรับรองทั้งหมดมีการลงนามโดยคีย์ของผู้ออกใบรับรอง (หรือลงชื่อด้วยตนเองหากไม่มีผู้ออกใบรับรองแยกต่างหาก)
คุณสามารถใช้ไฟล์ "ไพรเวทคีย์" X.509 สำหรับ SSH - OpenSSH ได้อย่างง่ายดายแม้ใช้รูปแบบเดียวกัน
คุณสามารถสร้างใบรับรอง X.509 จากคีย์แพร์ธรรมดาแล้วลงนามด้วยตนเองหรือคุณสามารถสร้าง "คำขอใบรับรอง" และส่งเพื่อลงชื่อโดย CA (หน่วยงานออกใบรับรอง)
ในการแสดงข้อมูลในใบรับรอง X.509 ให้ใช้:
certtool -i < foo.pem
certtool -i --inder < foo.crt
openssl x509 -noout -text < foo.pem
openssl x509 -noout -text -inform der < foo.crt
( certtool
เป็นส่วนหนึ่งของ GnuTLS)
ปุ่ม OpenPGP (ใช้โดย GPG) นั้นซับซ้อนที่สุด สิ่งที่คุณเรียกว่า "คีย์ PGP" หรือ "PGP keypair" เป็นโครงสร้างที่ซับซ้อนที่เรียกว่า "ใบรับรอง OpenPGP" ซึ่งมี:
- หนึ่ง "คีย์หลัก" - คู่ของคีย์อสมมาตรซึ่งมักใช้สำหรับการเซ็นชื่อ
- "ID ผู้ใช้" อย่างน้อยหนึ่งรายการ - ป้ายกำกับข้อความซึ่งมักจะอยู่ในรูปแบบของ "ชื่อ <email @ address>"
- อย่างน้อยหนึ่งรายการถูกทำเครื่องหมายเป็น "ID ผู้ใช้หลัก"
- สำหรับแต่ละ ID ผู้ใช้ "ลายเซ็นตนเอง" - ลายเซ็นโดยคีย์หลักของคุณเอง
- สำหรับ ID ผู้ใช้แต่ละรายการ "ผู้ใช้อื่น ๆ " มีลายเซ็น "หรือมากกว่านั้น
- แพ็กเก็ตลายเซ็นต์ตนเองประกอบด้วยอัลกอริธึมที่คุณต้องการ (SHA-1, AES ฯลฯ )
- คีย์ย่อย "หนึ่งคีย์หรือมากกว่า" - คู่คีย์เพิ่มเติมโดยปกติตัวแรกจะใช้สำหรับการเข้ารหัส
- สำหรับแต่ละคีย์ย่อยลายเซ็นโดยคีย์หลัก
- "ID ภาพถ่าย" หรือศูนย์หรือไฟล์แนบ JPEG หรือ PNG ที่มีใบหน้าของคุณ
- ลงนามเช่นเดียวกับ ID ผู้ใช้
- ใบรับรอง X.509 เป็นศูนย์ขึ้นไป
คู่คีย์ทั้งหมดมีวันที่หมดอายุและบิตการใช้งาน: ข้อมูลลงชื่อคีย์รับรอง (ลงชื่อ) เข้ารหัสเข้ารหัสรับรองกับบริการ คีย์หลักโดยค่าเริ่มต้นมีบิต "เครื่องหมาย" และ "รับรอง" และคีย์ย่อยแรกคือ "เข้ารหัส" หากคุณเพิ่มคีย์ย่อย "การรับรองความถูกต้อง" คุณสามารถใช้มันผ่านgpg-agent
การตรวจสอบความถูกต้องของ SSH
หากต้องการดูว่าใบรับรองของคุณมีอะไรบ้าง:
gpg --export joe@example.com | gpg -vv
gpg --export joe@example.com | certtool --pgp-certificate-info
( certtool
เป็นส่วนหนึ่งของ GnuTLS)
สถานการณ์ที่สับสนน้อยกว่าอยู่ใน OpenPGP: ข้อมูลทั้งหมดเป็นไปตามรูปแบบไบนารีที่เหมือนกันและเป็นทางเลือก "เกราะ" (เข้ารหัสด้วย Radix64 และระหว่างส่วนหัวคล้าย PEM)