ความแตกต่างระหว่างใบรับรองและคีย์ที่เกี่ยวข้องกับ SSL คืออะไร


126

เมื่อใดก็ตามที่ฉันพยายามที่จะเข้าใจอะไรเกี่ยวกับ SSL ฉันมักจะมีเวลาที่ยากลำบากในการติดตามสิ่งที่ "สำคัญ" และ "ใบรับรอง" อ้างถึง ฉันกลัวว่าหลายคนใช้มันไม่ถูกต้องหรือสลับกันได้ มีความแตกต่างมาตรฐานระหว่างคีย์และใบรับรองหรือไม่


ใบรับรองที่ใช้สำหรับ SSL นั้นขึ้นอยู่กับ PKI en.wikipedia.org/wiki/Public-key_cryptography
Zoredache

คำตอบ:


114

ใบรับรองประกอบด้วยพับลิกคีย์

ใบรับรองนอกเหนือจากการบรรจุกุญแจสาธารณะจะมีข้อมูลเพิ่มเติมเช่นผู้ออกใบรับรองสิ่งที่ควรใช้สำหรับใบรับรองและเมตาดาต้าประเภทอื่น

โดยทั่วไปแล้วใบรับรองจะลงนามโดยผู้ออกใบรับรอง (CA) โดยใช้คีย์ส่วนตัวของ CA สิ่งนี้จะตรวจสอบความถูกต้องของใบรับรอง


4
@Zoredache หากโดยทั่วไปแล้วใบรับรองมีเพียงพับลิกคีย์จะมีชื่อที่ดีสำหรับการเรียกไฟล์. p12 หรือ. pfx ที่มีใบรับรองและคีย์ส่วนตัวรวมกันหรือไม่?
drs

pkcs12 เป็นรูปแบบไฟล์เก็บถาวร อาจมีรหัสหรืออาจไม่ ฉันมักจะพยายามที่จะเฉพาะเจาะจงเมื่ออ้างอิงถึงสิ่งที่มีไฟล์ใดไฟล์หนึ่งหรือเพียงแค่พูดไฟล์ pkcs12
Zoredache

2
ข้อมูลเพิ่มเติมนี้ถูกฝังอยู่ที่ไหน? ฉันกำลังดูใบรับรองบางอย่างและมันก็พูดพล่อยๆทั้งหมดของฉัน
CodyBugstein

3
ความหมายที่คุณกำลังดูคือการเข้ารหัส Base64 ก็ทำวิธีการที่อาจจะเป็นเหตุผลที่คล้ายกันที่แนบมากับอีเมล์จะถูกแปลงเป็นว่า - พื้นเพื่อให้แน่ใจว่าพวกเขาสามารถส่งผ่านโปรโตคอลและกลไกที่ออกแบบมาสำหรับ ASCII เท่านั้นโดยไม่มีการดัดแปลงสบาย ๆ และโดยไม่ต้องกังวลเกี่ยวกับสิ่งที่ต้องการขึ้นบรรทัดใหม่วงเล็บ ฯลฯopensslคำสั่งสามารถถอดรหัส และแยกวิเคราะห์สิ่งเหล่านี้หรือคุณสามารถใช้ยูทิลิตีออนไลน์เช่นนี้: lapo.it/asn1js
LawrenceC

ใบรับรองที่ลงนามโดย CA หรือเซิร์ฟเวอร์ที่มีการสื่อสารด้วยหรือไม่
Olshansk

58

ภาพสองภาพเหล่านี้ร่วมกันอธิบายทุกอย่างให้ฉัน:

ที่มา: linuxvoice

ป้อนคำอธิบายรูปภาพที่นี่

แหล่งที่มา: infosecinstitute

ป้อนคำอธิบายรูปภาพที่นี่



ดี 1 clarification: รูปที่ 1 เป็นมาตรฐาน (1 ทาง) TLS auth; การรับรองความถูกต้องที่ 2, ร่วมกัน (2 ทาง) และการโทรออกพิเศษ 1 ครั้งในครั้งแรกจะช่วยอธิบายวิธีการสร้างความน่าเชื่อถือจริง ๆ (ทั้งหมดในรูปที่ดูเป็นมิตร 1 รูป): หลังจากที่ลูกค้าได้รับกุญแจสาธารณะของเซิร์ฟเวอร์ใบรับรองลูกค้าจะตรวจสอบว่า CA ที่ลงนามใน ใบรับรองของเซิร์ฟเวอร์มีอยู่ในรายการส่วนตัวของ CA ที่เชื่อถือได้ของลูกค้า (การสร้างที่ตอนนี้มันยังไว้วางใจ CA นั้น) จากนั้นจึงปลอดภัยที่จะส่งคีย์เซสชันของเซิร์ฟเวอร์โดยที่แต่ละตัวสามารถเข้ารหัสและถอดรหัสการสื่อสารที่ตามมา
user1172173

ลิงก์แรกไปที่linuxvoice.com/ให้ข้อผิดพลาดเกี่ยวกับใบรับรอง แดกดัน
Tobb

37

ให้บอกว่า บริษัท A มีคู่คีย์และต้องการเผยแพร่คีย์สาธารณะของเขาสำหรับการใช้งานสาธารณะ (aka ssl บนเว็บไซต์ของเขา)

  • บริษัท A จะต้องส่งคำขอใบรับรอง (CR) ไปยังหน่วยงานออกใบรับรอง (CA) เพื่อรับใบรับรองสำหรับคู่กุญแจของเขา
  • คีย์สาธารณะ แต่ไม่ใช่คีย์ส่วนตัวของคู่คีย์ของ บริษัท A นั้นรวมอยู่ในการร้องขอใบรับรอง
  • จากนั้น CA จะใช้ข้อมูลประจำตัวของ บริษัท A เพื่อพิจารณาว่าคำขอนั้นเป็นไปตามเกณฑ์ของ CA สำหรับการออกใบรับรองหรือไม่
    หาก CA อนุมัติคำขอมันจะออกใบรับรองให้กับ บริษัท A โดยย่อ CA ลงนามในคีย์สาธารณะของ บริษัท A ด้วยรหัสส่วนตัว (CA's) ซึ่งจะตรวจสอบความถูกต้อง

ดังนั้นรหัสสาธารณะของ บริษัท A ที่ลงนามด้วยคีย์ส่วนตัวของ CA ที่ถูกต้องจึงเรียกว่าใบรับรองของ บริษัท A


บริษัท A มีจุดเชื่อมโยงคีย์ส่วนตัว (บริษัท A) กับใบรับรอง (บริษัท A) หรือไม่?
Tola Odejayi

ไม่รหัสส่วนตัวยังคงมีค่าสำหรับ A.
Mohsen Heydari

ดังนั้นคีย์ส่วนตัวของ บริษัท A ที่ใช้อยู่ที่ไหน
sivann

2
หลังจากพิธีการข้างต้น บริษัท A จะมีใบรับรอง SSL ที่ถูกต้องบนเว็บไซต์ของเขา ผู้เข้าชม (เบราว์เซอร์) ที่สื่อสารเว็บไซต์จะใช้รหัสสาธารณะของใบรับรองเพื่อเข้ารหัสข้อความของเขา บริษัท A มีรหัสส่วนตัวของใบรับรอง SSL เป็นเพียงผู้เดียวที่สามารถถอดรหัสข้อความได้
Mohsen Heydari

ฉันเดาว่า บริษัท A เป็นผู้ชาย
DimiDak

5

ให้ฉันอธิบายด้วยตัวอย่าง

ใน PKI ตามคู่กุญแจปกติจะมีคีย์ส่วนตัวและกุญแจสาธารณะ

ในระบบที่ใช้ใบรับรองมีคีย์ส่วนตัวและใบรับรอง ใบรับรองเก็บข้อมูลมากกว่าคีย์สาธารณะ

ตัวอย่าง (คุณสามารถสร้างใบรับรองและรหัสส่วนตัว): http://www.selfsignedcertificate.com/

คุณสามารถดาวน์โหลดเปิดไฟล์กุญแจส่วนตัวและไฟล์ใบรับรองคุณเห็นไฟล์ใบรับรองมีข้อมูลมากมายดังที่แสดงด้านล่าง ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถจับคู่ใบรับรองที่สร้างขึ้น (เปิดโดยตัวแก้ไขข้อความ) และคีย์ส่วนตัว (เปิดโดยตัวแก้ไขข้อความ) จากไซต์นี้: https://www.sslshopper.com/certificate-key-matcher.html

หากใบรับรองตรงกับกุญแจส่วนตัวของลูกค้าลูกค้ามั่นใจว่าใบรับรองนั้นมอบให้โดยลูกค้าหรือมอบให้โดยตัวแทนที่เชื่อถือได้ (CA) ของลูกค้า

แต่มีปัญหาในการคีย์ส่วนตัวเท่านั้นและการสื่อสารตามใบรับรอง

เนื่องจากทุกคนสามารถสร้างใบรับรองและคีย์ส่วนตัวของตนเองได้ดังนั้นการจับมืออย่างง่ายจึงไม่ได้พิสูจน์อะไรเลยเกี่ยวกับเซิร์ฟเวอร์อื่นนอกจากเซิร์ฟเวอร์จะรู้รหัสส่วนตัวที่ตรงกับกุญแจสาธารณะของใบรับรอง วิธีหนึ่งในการแก้ไขปัญหานี้คือการให้ลูกค้ามีชุดของใบรับรองหนึ่งใบหรือมากกว่าที่ไว้วางใจ หากใบรับรองไม่ได้อยู่ในชุดเซิร์ฟเวอร์ไม่ได้ที่จะได้รับความเชื่อถือ

มีข้อเสียหลายวิธีง่าย ๆ นี้ เซิร์ฟเวอร์ควรสามารถอัปเกรดเป็นคีย์ที่แข็งแกร่งขึ้นเมื่อเวลาผ่านไป ("การหมุนเวียนคีย์") ซึ่งจะแทนที่คีย์สาธารณะในใบรับรองด้วยรหัสใหม่ น่าเสียดายที่ตอนนี้แอปไคลเอนต์ต้องได้รับการอัปเดตเนื่องจากการเปลี่ยนแปลงการกำหนดค่าเซิร์ฟเวอร์เป็นหลัก นี่เป็นปัญหาโดยเฉพาะอย่างยิ่งหากเซิร์ฟเวอร์ไม่ได้อยู่ภายใต้การควบคุมของผู้พัฒนาแอปตัวอย่างเช่นหากเป็นบริการเว็บของบุคคลที่สาม วิธีนี้ยังมีปัญหาหากแอปต้องพูดคุยกับเซิร์ฟเวอร์ตามอำเภอใจเช่นเว็บเบราว์เซอร์หรือแอพอีเมล

เพื่อแก้ไขข้อเสียเหล่านี้โดยทั่วไปแล้วเซิร์ฟเวอร์จะได้รับการกำหนดค่าด้วยใบรับรองจากผู้ออกใบรับรองที่มีชื่อเสียงที่เรียกว่า Certificate Authorities (CA) เขาโฮสต์แพลตฟอร์ม (ไคลเอนต์) โดยทั่วไปประกอบด้วยรายการของ CA ที่รู้จักกันดีที่ไว้วางใจ เช่นเดียวกับเซิร์ฟเวอร์ CA มีใบรับรองและคีย์ส่วนตัว เมื่อออกใบรับรองสำหรับเซิร์ฟเวอร์ CA จะลงนามใบรับรองเซิร์ฟเวอร์โดยใช้คีย์ส่วนตัว จากนั้นไคลเอ็นต์สามารถตรวจสอบว่าเซิร์ฟเวอร์มีใบรับรองที่ออกโดย CA ซึ่งเป็นที่รู้จักในแพลตฟอร์ม

อย่างไรก็ตามในขณะที่การแก้ปัญหาบางอย่างใช้ CAs แนะนำอีก เนื่องจาก CA ออกใบรับรองสำหรับเซิร์ฟเวอร์จำนวนมากคุณยังคงต้องการวิธีที่จะทำให้แน่ใจว่าคุณกำลังพูดคุยกับเซิร์ฟเวอร์ที่คุณต้องการ ในการแก้ไขปัญหานี้ใบรับรองที่ออกโดย CA จะระบุเซิร์ฟเวอร์ด้วยชื่อเฉพาะเช่น gmail.com หรือชุดของโฮสต์ที่มีการใช้สัญลักษณ์แทนเช่น * .google.com

ตัวอย่างต่อไปนี้จะทำให้แนวคิดเหล่านี้เป็นรูปธรรมมากขึ้น ในตัวอย่างด้านล่างจากบรรทัดคำสั่งคำสั่ง s_client เครื่องมือ openssl จะดูที่ข้อมูลใบรับรองเซิร์ฟเวอร์ของ Wikipedia มันระบุพอร์ต 443 เพราะนั่นเป็นค่าเริ่มต้นสำหรับ HTTPS คำสั่งส่งเอาต์พุตของ openssl s_client ไปยัง openssl x509 ซึ่งจัดรูปแบบข้อมูลเกี่ยวกับใบรับรองตามมาตรฐาน X.509 โดยเฉพาะคำสั่งจะถามหัวเรื่องซึ่งมีข้อมูลชื่อเซิร์ฟเวอร์และผู้ออกซึ่งระบุ CA

$ openssl s_client -connect wikipedia.org:443 | openssl x509 -noout -subject -issuer
subject= /serialNumber=sOrr2rKpMVP70Z6E9BT5reY008SJEdYv/C=US/O=*.wikipedia.org/OU=GT03314600/OU=See www.rapidssl.com/resources/cps (c)11/OU=Domain Control Validated - RapidSSL(R)/CN=*.wikipedia.org
issuer= /C=US/O=GeoTrust, Inc./CN=RapidSSL CA

คุณจะเห็นว่ามีการออกใบรับรองสำหรับเซิร์ฟเวอร์ที่ตรงกับ * .wikipedia.org โดย RapidSSL CA

อย่างที่คุณเห็นเนื่องจากข้อมูลเพิ่มเติมนี้ส่งโดย CA ไปยังเซิร์ฟเวอร์ลูกค้าสามารถทราบได้อย่างง่ายดายว่ากำลังสื่อสารกับเซิร์ฟเวอร์หรือไม่


3

รองรับ SSL ใบรับรองจะได้รับจากการรับรองที่เชื่อถือได้มีอำนาจซึ่งรับรองสำหรับการเชื่อมต่อที่ปลอดภัยของเว็บไซต์ ใบรับรอง SSL มักจะมีโลโก้ของการรับรองความถูกต้องและคีย์สาธารณะที่จำเป็นในการเข้ารหัสและถอดรหัสข้อมูลที่จะส่งไปยังคอมพิวเตอร์ ฟังก์ชั่นคีย์ SSL

สามารถสร้างคีย์ SSL ได้หลายอย่างในระหว่างเซสชัน พวกเขาจะใช้ในการเข้ารหัสและถอดรหัสข้อมูลที่ถูกส่งไปยังและจากคอมพิวเตอร์คีย์ที่ใช้ในการตรวจสอบว่าข้อมูลที่ไม่ได้รับการแก้ไขหรือดัดแปลงด้วย

ความแตกต่างของวัฏจักร

ใบรับรองมีอายุการใช้งานนานกว่าคีย์ SSL ใบรับรอง SSL นั้นได้รับจากหน่วยงานออกใบรับรองซึ่งสามารถต่ออายุเป็นประจำโดยธนาคารและธุรกิจ ในทางกลับกันคีย์ SSL หรือคีย์เซสชันจะถูกสร้างขึ้นโดยไม่ซ้ำกันระหว่างเซสชันและจะถูกยกเลิกเมื่อสิ้นสุดเซสชัน

อ่านเพิ่มเติมได้ที่นี่


2

ตกลงกันเถอะทำลายมันเพื่อให้คนที่ไม่ใช่ช่างเทคนิคเข้าใจ

คิดว่ามันเป็นอย่างนี้ ใบรับรองเปรียบเสมือนตู้นิรภัยที่ธนาคารของคุณ มันมีสิ่งที่สำคัญมากมาย โดยทั่วไปสิ่งที่มีตัวตนของคุณ ใบรับรองมีพับลิกคีย์และต้องการไพรเวตคีย์เพื่อเปิด

กล่องนิรภัยของคุณใช้สองปุ่มเพื่อเปิดเช่นเดียวกับใบรับรอง
พร้อมตู้นิรภัยรหัสของธนาคารก็เหมือนกุญแจสาธารณะเนื่องจากอยู่ที่ธนาคารและกุญแจสาธารณะอยู่กับใบรับรอง คุณมีรหัสส่วนตัวซึ่งจำเป็นในการ "รับใบรับรองของคุณ" และในตัวอย่างของตู้เซฟจำเป็นต้องใช้กุญแจส่วนตัวของคุณนอกเหนือจากรหัสสาธารณะเช่นกัน

ก่อนที่คุณจะสามารถเปิดตู้นิรภัยได้คุณต้องยืนยันตัวตนของคุณก่อน (ชนิดของคำขอใบรับรอง) เมื่อคุณได้รับการระบุแล้วคุณสามารถใช้กุญแจส่วนตัวของคุณพร้อมกับกุญแจสาธารณะเพื่อเปิดตู้เซฟ นี่เป็นเพียงการขอใบรับรองจากนั้นรับใบรับรองจากหน่วยงานออกใบรับรอง (ตราบใดที่คุณสามารถระบุได้ (เชื่อถือได้) และคุณมีรหัสที่ถูกต้อง)


3
<PiratesOfTheCarribean> ดังนั้นเราจะไปตามคีย์นี้! </PiratesOfTheCarribean> (อ่าน: คุณไม่ได้เข้าใจเลย ... )
ติโม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.