กลับไปหน้าบทความ

อ่าน 5 นาที

คำขอลงนามใบรับรอง

ใน ระบบ โครงสร้างพื้นฐานกุญแจสาธารณะ (PKI) คำขอลงนามใบรับรอง ( CSR หรือ คำขอรับรอง ) คือข้อความที่ส่งจากผู้สมัครไปยัง หน่วยงานออกใบรับรอง ของโครงสร้างพื้นฐานกุญแจสาธารณะ (PKI)...

คำขอลงนามใบรับรอง

ใน ระบบ โครงสร้างพื้นฐานกุญแจสาธารณะ (PKI) คำขอลงนามใบรับรอง ( CSRหรือคำขอรับรอง ) คือข้อความที่ส่งจากผู้สมัครไปยังหน่วยงานออกใบรับรองของโครงสร้างพื้นฐานกุญแจสาธารณะ (PKI) เพื่อขอใบรับรองเอกลักษณ์ดิจิทัล CSR มักประกอบด้วยกุญแจสาธารณะที่ควรออกใบรับรอง ข้อมูลระบุตัวตน (เช่น ผู้ถือหรือชื่อโดเมน) และหลักฐานการครอบครองกุญแจส่วนตัวที่เกี่ยวข้อง (โดยทั่วไปอยู่ในรูปแบบของลายเซ็นดิจิทัล ซึ่งรวมถึงการป้องกันความสมบูรณ์) รูปแบบที่พบบ่อยที่สุดสำหรับ CSR คือ ข้อกำหนด PKCS #10ซึ่งเผยแพร่ครั้งแรกในเดือนพฤศจิกายน 1993 [ 1 ] รูปแบบอื่นๆ ได้แก่ รูปแบบข้อความคำขอใบรับรอง (CRMF) ที่มีประสิทธิภาพมากกว่า[ 2 ]และ รูปแบบ SPKAC (Signed Public Key and Challenge) ที่สร้างโดยเว็บเบราว์เซอร์บาง ตัว

โปรดทราบว่ารูปแบบ CSR ทั้งสองแบบนี้ไม่ได้ตรวจสอบยืนยันตัวตนของผู้ร้องขอ หลักฐานที่มาของการร้องขอจะต้องได้รับการตรวจสอบและยืนยันด้วยวิธีการอื่น (โดยทั่วไปจะใช้โปรโตคอลการลงทะเบียนใบรับรอง เช่นCMP , ESTหรือACME ) มิเช่นนั้นใบรับรองที่ได้รับจะไม่มีคุณค่าด้านความปลอดภัยที่แท้จริง

ขั้นตอน

ก่อนที่จะสร้าง CSR สำหรับ ใบรับรอง X.509ผู้สมัครจะต้องสร้างคู่คีย์โดยเก็บคีย์ส่วนตัวของคู่คีย์นั้นไว้เป็นความลับ เช่น:

$ # https://www.openssl.org/docs/manmaster/man1/openssl-genrsa.html $ # "openssl genrsa" สร้างคีย์ส่วนตัว RSA: $ openssl genrsa -out 2024_wikipedia.org.key 

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

เอกสาร CSR ต้องแนบหลักฐานแสดงที่มา (เช่น หลักฐานแสดงตัวตนของผู้สมัคร) ซึ่งจำเป็นสำหรับเหตุผลด้านความปลอดภัยโดยหน่วยงานออกใบรับรอง หน่วยงานออกใบรับรองอาจติดต่อผู้สมัครเพื่อขอข้อมูลเพิ่มเติม

ข้อมูลทั่วไปที่จำเป็นใน CSR (ตัวอย่างคอลัมน์จากตัวอย่างใบรับรอง X.509 ) โปรดทราบว่ามักจะมีทางเลือกอื่นสำหรับชื่อที่ระบุเฉพาะ (Distinguished Names หรือ DN) โดยค่าที่ต้องการใช้มากที่สุดจะถูกระบุไว้

DN [ 3 ]ข้อมูล คำอธิบาย ตัวอย่าง
CNชื่อสามัญ นี่คือชื่อโดเมนที่มีคุณสมบัติครบถ้วนที่คุณต้องการจดทะเบียน *.วิกิพีเดีย.org
Oชื่อองค์กร โดยปกติจะเป็นชื่อตามกฎหมายของบริษัทหรือนิติบุคคล และควรมีคำต่อท้าย เช่น Ltd., Inc. หรือ Corp. รวมอยู่ด้วย มูลนิธิวิกิมีเดีย จำกัด
OUหน่วยงานองค์กร ชื่อแผนก/ฝ่ายภายในองค์กร มัน
Lท้องถิ่น ชื่อเมือง หมู่บ้าน ฯลฯ ซานฟรานซิสโก
STสถานะ จังหวัด ภูมิภาค เขต หรือรัฐ ห้ามย่อ (เช่น เวสต์ซัสเซ็กซ์ นอร์มังดี นิวเจอร์ซีย์) แคลิฟอร์เนีย
Cประเทศ รหัส ISO สองตัวอักษรสำหรับประเทศที่องค์กรของคุณตั้งอยู่ เรา
emailAddressที่อยู่อีเมล ผู้ติดต่อขององค์กร ซึ่งโดยปกติจะเป็นผู้ดูแลระบบใบรับรองหรือฝ่ายไอที

ตัวอย่างคำสั่ง OpenSSL นี้ใช้รายละเอียดตามที่ระบุในตารางด้านบนเพื่อสร้าง CSR ในรูปแบบ PKCS #10:

$ # https://www.openssl.org/docs/manmaster/man1/openssl-req.html $ # "openssl req" สร้างคำขอลงนามใบรับรองในรูปแบบ PKCS #10: $ openssl req -sha512 -new -subj "/C=US/ST=California/L=San Francisco/O=Wikimedia Foundation, Inc./CN=*.wikipedia.org" -key 2024_wikipedia.org.key -out 2024_wikipedia.org.csr 

โดยปกติแล้ว CSR จะถูกส่งไปยังหน่วยงานลงทะเบียน (Registration Authority หรือ RA) ซึ่งจะตรวจสอบเนื้อหาของ CSR และยืนยันตัวตนของผู้สมัคร เมื่อสำเร็จ CSR จะถูกส่งต่อไปยังหน่วยงานออกใบรับรอง (Certificate Authorityหรือ CA) ซึ่งจะสร้างใบรับรองกุญแจสาธารณะ X.509 โดยลงนามดิจิทัลโดยใช้กุญแจส่วนตัวของ CA และส่งใบรับรองใหม่ไปยังผู้สมัคร

โครงสร้างของ PKCS #10 CSR

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

ลายเซ็นนี้เป็นลายเซ็นด้วยตนเองโดยใช้คู่คีย์ของผู้สมัคร เนื่องจากข้อกำหนดเรื่องลายเซ็นด้วยตนเอง รูปแบบนี้จึงใช้ได้เฉพาะกับคีย์ประเภทที่รองรับการลงนามเท่านั้น อย่างไรก็ตาม มีรูปแบบอื่นที่ไม่รวมลายเซ็นจริง เช่นที่อธิบายไว้ในภาคผนวก C.1 ของRFC  5272 ( CMS )

ส่วนแรกประกอบด้วยข้อมูลที่สำคัญที่สุดคือ กุญแจสาธารณะและตัวตนของผู้สมัคร การลงนามด้วยตนเองของผู้สมัครเป็นการพิสูจน์การครอบครอง (POP) การตรวจสอบ POP ป้องกันไม่ให้หน่วยงานร้องขอใบรับรองปลอมของกุญแจสาธารณะของผู้อื่น[ 4 ] ดังนั้นจึงจำเป็นต้องใช้กุญแจส่วนตัวในการสร้าง PKCS #10 CSR [ 5 ] อย่างไรก็ตาม โปรดทราบว่า POP สำหรับคู่กุญแจโดยหน่วยงานที่เกี่ยวข้องไม่ได้ให้การตรวจสอบความถูกต้องของหน่วยงานที่เกี่ยวข้องแต่อย่างใด ดังนั้นหลักฐานที่มาของคำขอจากผู้สมัครจะต้องได้รับการจัดหาและตรวจสอบด้วยวิธีการอื่น มิฉะนั้นอาจสร้างใบรับรองที่ไม่ถูกต้องได้หากข้อมูลของบุคคล/ผู้ถือไม่ถูกต้อง

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

ส่วนแรก ASN.1 ประเภทCertificationRequestInfoประกอบด้วยหมายเลขเวอร์ชัน (ซึ่งเป็น 0 สำหรับเวอร์ชันที่รู้จักทั้งหมด 1.0, 1.5 และ 1.7 ของข้อกำหนด) ชื่อเรื่อง คีย์สาธารณะ (ตัวระบุอัลกอริทึม + สตริงบิต) และชุดแอตทริบิวต์ที่ให้ข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อของใบรับรอง แอตทริบิวต์สามารถมีส่วนขยายใบรับรองที่จำเป็น รหัสผ่านท้าทายเพื่อจำกัดการเพิกถอน รวมถึงข้อมูลเพิ่มเติมใดๆ เกี่ยวกับหัวข้อของใบรับรอง ซึ่งอาจรวมถึงประเภทท้องถิ่นหรือประเภทในอนาคต[ 4 ]

ตัวอย่างของ PKCS #10 CSR

มาตรฐาน PKCS#10 กำหนดไวยากรณ์ ความหมาย และรูปแบบไบนารีสำหรับ CSR เพื่อใช้กับX.509โดยเข้ารหัสใน รูปแบบ ASN.1ด้วย รูปแบบ DERต่อไปนี้เป็นตัวอย่างวิธีการตรวจสอบโครงสร้าง ASN.1 โดยใช้OpenSSL :

openssl asn1parse -i -in your_request.p10

CSR อาจแสดงในรูป แบบ PKCS#10 ที่เข้ารหัสแบบ Base64โดยมีตัวอย่างดังต่อไปนี้:

-----เริ่มคำขอใบรับรอง----- MIICzDCCAbQCAQAwgYYxCzAJBgNVBAYTAkVOMQ0wCwYDVQQIDARub25lMQ0wCwYD VQQHDARub25lMRIwEAYDVQQKDAlXaWtpcGVkaWExDTALBgNVBAsMBG5vbmUxGDAW BgNVBAMMDyoud2lraXBlZGlhLm9yZzEcMBoGCSqGSIb3DQEJARYNbm9uZUBub25l LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMP/U8RlcCD6E8AL PT8LLUR9ygyygPCaSmIEC8zXGJung3ykElXFRz/Jc/bu0hxCxi2YDz5IjxBBOpB/ kieG83HsSmZZtR+drZIQ6vOsr/ucvpnB9z4XzKuabNGZ5ZiTSQ9L7Mx8FzvUTq5y /ArIuM+FBeuno/IV8zvwAe/VRa8i0QjFXT9vBBp35aeatdnJ2ds50yKCsHHcjvtr 9/8zPVqqmhl2XFS3Qdqlsprzbgksom67OobJGjaV+fNHNQ0o/rzP//Pl3i7vvaEG 7Ff8tQhEwR9nJUR1T6Z7ln7S6cOr23YozgWVkEJ/dSr6LAopb+cZ88FzW5NszU6i 57HhA7ECAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4IBAQBn8OCVOIx+n0AS6WbEmYDR SspR9xOCoOwYfamB+2Bpmt82R01zJ/kaqzUtZUjaGvQvAaz5lUwoMdaO0X7I5Xfl sllMFDaYoGD4Rru4s8gz2qG/QHWA8uPXzJVAj6X0olbIdLTEqTKsnBj4Zr1AJCNy /YcG4ouLJr140o26MhwBpoCRpPjAgdYMH60BYfnc4/DILxMVqR9xqK1s98d6Ob/+ 3wHFK+S7BRWrJQXcM8veAexXuk9lHQ+FgGfD0eSYGz0kyP26Qa2pLTwumjt+nBPl rfJxaLHwTQ/1988G0H35ED0f9Md5fzoKi5evU1wG5WRxdEUPyt3QUXxdQ69i0C+7 -----สิ้นสุดการร้องขอใบรับรอง-----

โครงสร้าง ASN.1 DER ของคำขอลงนามใบรับรองข้างต้น(ตามที่ openssl แยกวิเคราะห์) จะปรากฏดังนี้ โดยตัวเลขแรกคือค่าออฟเซ็ตไบต์ d คือความลึก hl คือความยาวส่วนหัวของประเภทปัจจุบัน และ l คือความยาวของเนื้อหา:

0 :d= 0 hl = 4 l= 716 cons : SEQUENCE 4 :d= 1 hl = 4 l= 436 cons : SEQUENCE 8 :d= 2 hl = 2 l= 1 prim : INTEGER : 00 11 :d= 2 hl = 3 l= 134 cons : SEQUENCE 14 :d= 3 hl = 2 l= 11 cons : SET 16 :d= 4 hl = 2 l= 9 cons : SEQUENCE 18 :d= 5 hl = 2 l= 3 prim : OBJECT : countryName 23 :d= 5 hl = 2 l= 2 prim : PRINTABLESTRING : EN 27 :d= 3 hl = 2 l= 13 cons : SET 29 :d= 4 hl = 2 l= 11 cons : SEQUENCE 31 :d= 5 hl = 2 l= 3 prim : OBJECT : stateOrProvinceName 36 :d= 5 hl = 2 l= 4 prim : UTF8STRING : none 42 :d= 3 hl = 2 l= 13 cons : SET 44 :d= 4 hl = 2 l= 11 cons : SEQUENCE 46 :d= 5 hl = 2 l= 3 prim : OBJECT : localityName 51 :d= 5 hl = 2 l= 4 prim : UTF8STRING : none 57 :d= 3hl = 2 l= 18 cons : SET 59 :d= 4 hl = 2 l= 16 cons : SEQUENCE 61 :d= 5 hl = 2 l= 3 prim : OBJECT : organizationName 66 :d= 5 hl = 2 l= 9 prim : UTF8STRING : Wikipedia 77 :d= 3 hl = 2 l= 13 cons : SET 79 :d= 4 hl = 2 l= 11 cons : SEQUENCE 81 :d= 5 hl = 2 l= 3 prim : OBJECT : organizationalUnitName 86 :d= 5 hl = 2 l= 4 prim : UTF8STRING : none 92 :d= 3 hl = 2 l= 24 cons : SET 94 :d= 4 hl = 2 l= 22 cons : SEQUENCE 96 :d= 5 hl = 2 l= 3 prim : OBJECT : commonName 101 :d= 5 hl = 2 l= 15 prim : UTF8STRING :* . wikipedia . org 118 :d= 3 hl = 2 l= 28 cons : SET 120 :d= 4 hl = 2 l= 26 cons : SEQUENCE 122 :d= 5 hl = 2 l= 9 prim : OBJECT : emailAddress 133 :d= 5 hl = 2 l= 13 prim : IA5STRING : none@ ไม่มี. com 148 :d= 2 hl = 4 l= 290 cons : SEQUENCE 152 :d= 3 hl = 2 l= 13 cons : SEQUENCE 154 :d= 4 hl = 2 l= 9 prim : OBJECT : rsaEncryption 165 :d= 4 hl = 2 l= 0 prim : NULL 167 :d= 3 hl = 4 l= 271 prim : BIT STRING 442 :d= 2 hl = 2 l= 0 cons : cont [ 0 ] 444 :d= 1 hl = 2 l= 13 cons : SEQUENCE 446 :d= 2 hl = 2 l= 9 prim : OBJECT : md5WithRSAEncryption 457 :d= 2 hl = 2 l= 0 prim : NULL 459 :d= 1 hl = 4 l= 257 prim : สตริงบิต

ข้อมูลนี้สร้างขึ้นโดยการใส่การเข้ารหัส base64 ลงในคำสั่งโดยที่ PEM ( Privacy-Enhanced Mail ) คือการเข้ารหัสของกฎการเข้ารหัสที่แตกต่างกัน ของ ASN.1 ในรูปแบบ base64 openssl asn1parse -in your_request.p10 -inform PEM -i

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Certificate_signing_request&oldid=1341878660 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ คำขอลงนามใบรับรอง

ใน ระบบ โครงสร้างพื้นฐานกุญแจสาธารณะ (PKI) คำขอลงนามใบรับรอง ( CSR หรือ คำขอรับรอง ) คือข้อความที่ส่งจากผู้สมัครไปยัง หน่วยงานออกใบรับรอง ของโครงสร้างพื้นฐานกุญแจสาธารณะ (PKI)...

ขั้นตอน

ก่อนที่จะสร้าง CSR สำหรับ ใบรับรอง X.509 ผู้สมัครจะต้องสร้าง คู่คีย์ โดยเก็บ คีย์ส่วนตัว ของคู่คีย์นั้นไว้เป็นความลับ เช่น:

โครงสร้างของ PKCS #10 CSR

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

ตัวอย่างของ PKCS #10 CSR

มาตรฐาน PKCS#10 กำหนดไวยากรณ์ ความหมาย และรูปแบบไบนารีสำหรับ CSR เพื่อใช้กับ X.509 โดยเข้ารหัสใน รูปแบบ ASN.1 ด้วย รูปแบบ DER ต่อไปนี้เป็นตัวอย่างวิธีการตรวจสอบโครงสร้าง ASN.1 โดยใช้ OpenSSL :