ตัวถอดรหัส CSR
ก่อนที่หน่วยงานออกใบรับรอง (CA) จะลงนามในใบรับรอง TLS คุณต้องส่งคำขอลงนามใบรับรอง (Certificate Signing Request: CSR) ให้กับหน่วยงานนั้น โดย CSR เป็นข้อมูลในรูปแบบ base64 ที่มีข้อมูลผู้ขอที่คุณต้องการให้อยู่ในใบรับรองและกุญแจสาธารณะของคุณ พร้อมลายเซ็นที่พิสูจน์ว่าคุณถือกุญแจส่วนตัวที่ตรงกัน ตัวถอดรหัสนี้รับ CSR ที่เข้ารหัสด้วย PEM และแสดงข้อมูลแต่ละช่องของผู้ขอพร้อมพารามิเตอร์ของกุญแจสาธารณะ เพื่อให้คุณตรวจสอบชื่อทั่วไป องค์กร และขนาดคีย์ได้ก่อนส่งให้ CA
วิธีถอดรหัส CSR
-
1
วาง CSR
รวมเครื่องหมาย `-----BEGIN CERTIFICATE REQUEST-----` และ `-----END CERTIFICATE REQUEST-----` ไว้ด้วย ช่องว่างได้รับการยอมรับ
-
2
เรียกใช้ตัวถอดรหัส
คำขอจะถูกแยกวิเคราะห์ และอ่านข้อมูลผู้ขอแต่ละช่องพร้อมกุญแจสาธารณะ
-
3
ตรวจสอบผลลัพธ์
ตรวจสอบช่องข้อมูลผู้ขอ เช่น ชื่อทั่วไปและองค์กร รวมถึงอัลกอริทึมและขนาดของคีย์
-
4
ดำเนินการตามผลลัพธ์
หากผู้ขอหรือคีย์ดูผิดพลาด ให้สร้าง CSR ใหม่ก่อนส่งให้ CA
ตัวถอดรหัสแสดงอะไร
CSR เป็นโครงสร้าง ASN.1 (PKCS #10) ตัวถอดรหัสอ่านสองสิ่งจากมัน:
- ผู้ขอ (subject): ช่องข้อมูลชื่อเฉพาะ (Distinguished Name) ที่ถูกขอ โดยทั่วไปคือประเทศ (C) องค์กร (O) หน่วยงานในองค์กร (OU) ท้องที่ (L) จังหวัด (ST) และชื่อทั่วไป (CN)
- กุญแจสาธารณะ: อัลกอริทึม (RSA, EC, DSA) และขนาดคีย์เป็นบิต
ลายเซ็นที่อยู่ใน CSR คือสิ่งที่พิสูจน์ต่อ CA ว่าผู้ส่งคำขอถือกุญแจส่วนตัวที่ตรงกัน ตัวถอดรหัสนี้ไม่แสดงลายเซ็นดังกล่าว CA จะตรวจสอบเมื่อประมวลผลคำขอ
ตัวอย่างผลลัพธ์
สำหรับคำขอใบรับรองโดเมนทั่วไป ผลลัพธ์จะมีลักษณะดังนี้:
Subject: commonName=www.example.com, organizationName=Example Inc., countryName=US
Key bits: 2048
Key type: RSA
ชื่อของแอตทริบิวต์ในข้อมูลผู้ขอที่แน่นอนขึ้นอยู่กับวิธีสร้างคำขอ
ช่องข้อมูลสำหรับตรวจสอบซ้ำ
- ชื่อทั่วไป (CN): ควรเป็นชื่อโฮสต์หลัก โดยเบราว์เซอร์รุ่นใหม่จะไม่พิจารณาค่า CN และจะตรวจสอบเฉพาะ SAN เท่านั้น อย่างไรก็ตาม หน่วยงานรับรองหลายแห่งยังคงกำหนดให้ต้องมี CN ที่ถูกต้อง
- ชื่อทางเลือกของซับเจกต์ (SAN): ระบุชื่อโฮสต์ทั้งหมดและไวลด์การ์ดที่ใบรับรองจะคุ้มครอง เบราว์เซอร์จะเปรียบเทียบตาม SAN ไม่ใช่ตาม CN
- ประเทศ (C): รหัส ISO สองตัวอักษร (US, GB, DE) ไม่ใช่ชื่อเต็ม หน่วยงานรับรอง (CA) จะปฏิเสธรหัสที่ผิด
- ขนาดกุญแจ: RSA 2048 เป็นขั้นต่ำ ส่วน 3072 หรือ 4096 ใช้สำหรับความปลอดภัยที่สูงขึ้น ECDSA P-256 เป็นทางเลือกสมัยใหม่ที่ดีและให้ใบรับรองที่มีขนาดเล็กกว่า
- อัลกอริทึมการลงนาม: SHA-256 ขึ้นไป โดย SHA-1 ถูกเลิกใช้มานานแล้วและจะถูกปฏิเสธ
เกี่ยวกับชื่อทางเลือกของซับเจกต์ (SAN)
ตัวถอดรหัสแสดงข้อมูลผู้ขอของคำขอ แต่ไม่แสดงส่วนขยาย SAN เบราว์เซอร์จับคู่ใบรับรองกับ SAN ไม่ใช่ CN ดังนั้นหากใบรับรองต้องครอบคลุมชื่อโฮสต์เพิ่มเติม ให้รวมไว้เมื่อสร้างคำขอ เช่น:
openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr -addext "subjectAltName=DNS:example.com,DNS:www.example.com"
เมื่อตัวถอดรหัสไม่สามารถแยกวิเคราะห์ CSR ได้
สาเหตุที่พบบ่อยที่สุดคือบล็อก PEM ถูกตัดทอนหรือเสียหาย:
- ข้อความถูกตัด: วางบล็อกเต็มพร้อมเครื่องหมายทั้งสองอีกครั้ง
- มีการแทรกบรรทัดใหม่: วางบล็อกตามที่สร้างขึ้นมาเดิม
- เนื้อหาผิด: กุญแจสาธารณะ ใบรับรอง หรือกุญแจส่วนตัวที่วางผิดพลาดจะไม่ถูกแยกวิเคราะห์เป็น CSR
การสร้างคีย์ที่ตรงกัน
CSR จะถูกสร้างขึ้นพร้อมกับกุญแจส่วนตัวเสมอ คำสั่งทั่วไป:
openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr
หรือสำหรับ ECDSA:
openssl req -new -newkey ec:<(openssl ecparam -name prime256v1) -nodes -keyout example.key -out example.csr
โปรดดูแลกุญแจส่วนตัวให้ดี หากกุญแจนี้รั่วไหล ใบรับรองจะต้องถูกเพิกถอน
คำถามที่พบบ่อย
CSR มีเพียงข้อมูลสาธารณะ (กุญแจสาธารณะ ผู้ขอ และ SAN) พร้อมลายเซ็น จึงปลอดภัยที่จะแชร์กับ CA หรือวางในตัวถอดรหัส สิ่งที่ต้องเก็บเป็นความลับคือกุญแจส่วนตัวที่ตรงกัน
ไม่ได้ ตัวถอดรหัสนี้รองรับรูปแบบข้อความ PEM พร้อมเครื่องหมาย BEGIN/END CERTIFICATE REQUEST หากต้องการใช้คำขอ DER แบบไบนารี ให้แปลงเป็น PEM ก่อน เช่น ด้วยคำสั่ง openssl req -in request.der -inform DER -out request.pem
ไม่ ส่วนใหญ่แล้วหน่วยงานรับรองสาธารณะ (Let’s Encrypt, DigiCert, Sectigo) ต้องการเพียง CN และ SAN โดยไม่พิจารณา O, OU, L, ST, C สำหรับใบรับรองที่ตรวจสอบโดเมน ใบรับรองที่ตรวจสอบองค์กรและแบบตรวจสอบเพิ่มเติม (Extended Validation) จะตรวจสอบช่องเหล่านี้แยกกัน
ส่วนใหญ่มักเกิดจากข้อความที่วางถูกตัดทอนหรือมีการแทรกบรรทัดใหม่ หรือวางคีย์หรือใบรับรองแทน CSR โปรดวางบล็อกเต็มระหว่างเครื่องหมายทั้งสองอีกครั้ง
เครื่องมือที่เกี่ยวข้อง
ตารางอ้างอิง ASCII
ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL
อ้างอิงตัวอักษร HTML
รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ
ตารางอ้างอิงแป้นพิมพ์ลัด
ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux
เครื่องสร้างตัวอักษรสุ่ม
สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน
ตัวลดรูปพีชคณิตบูลีน
ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^
เครื่องมือตรวจสอบหมายเลขโทรศัพท์
ตรวจสอบโครงสร้างหมายเลขตามประเทศ พร้อมดูภูมิภาค ประเภท และรูปแบบ E.164 ระหว่างประเทศ ในประเทศ และ RFC 3966
เครื่องมือนี้มีให้บริการในภาษาอื่น
- CSR-Decoder [DE]
- CSR Çözücü [TR]
- أداة فك ترميز CSR [AR]
- CSR Decoder [EN]
- Decodificador de CSR [PT]
- CSR解码器 [ZH]
- CSRデコーダー [JA]
- Dekoder CSR [PL]
- CSR-decoder [NL]
- Decodificador de CSR [ES]
- CSR 디코더 [KO]
- Bộ giải mã CSR [VI]
- CSR-avkodare [SV]
- Dekoder CSR [ID]
- Décodeur CSR [FR]
- Decoder CSR [IT]
- Декодер CSR [RU]