การเพิ่ม Subject Alternate Names (SAN) ไปยังคำขอการเซ็นชื่อรับรอง (CSR) ที่มีอยู่


9

ใครช่วยบอกฉันได้ไหมว่าฉันจะเพิ่มชื่อสำรองของหัวเรื่องจำนวนมากให้กับ CSR ที่มีอยู่ได้อย่างไร

ฉันไม่ได้พูดเกี่ยวกับการสร้าง CSR ด้วย SAN หรือเพิ่ม SAN เมื่อลงนาม - ฉันรู้วิธีทำสิ่งเหล่านี้ทั้งสอง

พื้นหลัง: ปัญหาที่เรามีคือแชสซีเบลดของ HP ช่วยให้คุณสร้าง CSR แต่พวกเขาอนุญาตได้เพียง SAN เดียว เราไม่สามารถใช้ CSR ที่สร้างขึ้นที่อื่นเนื่องจากเราไม่สามารถใช้ใบรับรองผลลัพธ์เนื่องจากไม่มีวิธี (ที่ฉันหาได้) เพื่ออัปโหลดคีย์ไปยังแชสซีเบลด

กระบวนการมาตรฐานของ CA ของเราไม่อนุญาตให้เพิ่ม SAN คือเวลาลงชื่อ พวกเขายินดีที่จะทดลองใช้ แต่ฉันพยายามหาวิธีแก้ปัญหาที่จุดสิ้นสุดของเราเพราะนี่จะหมายความว่าเราจะไม่ต้องพึ่งพาพวกเขาที่มีกระบวนการที่ไม่ได้มาตรฐานสำหรับเรา - จากประสบการณ์ของฉันหากพวกเขาจำเป็นต้องใช้กระบวนการที่ไม่ได้มาตรฐาน ในที่สุดชีวิตจะยากลำบาก เช่นเมื่อพนักงานที่รู้ว่ากระบวนการที่ไม่ได้มาตรฐานนั้นไม่ปรากฏเนื่องจากออกจากงานเป็นต้น

วิธีปัจจุบันคือการเชื่อมต่อกับผู้ดูแลระบบบอร์ดเบลดแชสซีผ่านทางเว็บ gui และสร้าง CSR ด้วย CN เดียว

web gui อนุญาตให้ SAN เดียวใน CSR เท่านั้น

จากนั้นเราก็เซ็นชื่อมันด้วย stanza ต่อไปนี้ใน openssl config:

[ v3_ca ]
subjectAltName = "DNS:bladesystem8,DNS:bladesystem8.services.adelaide.edu.au,DNS:bladesystem8-backup,DNS:bladesystem8-backup.services.adelaide.edu.au"

ใบรับรองผลลัพธ์มี SAN เพิ่มเติม


คุณสร้าง certs บนเบลดแชสซีได้อย่างไร คุณใช้วิธีใดในการเชื่อมต่อ ฯลฯ ตัวแบบใบมีดแบบใด
อีไล

แชสซีเป็น c7000 ใช่ตอนนี้เรากำลังสร้าง CSRs บนแชสซีและเพิ่ม SAN เมื่อเวลาลงชื่อ แต่นั่นคือสำหรับ certs ที่ลงชื่อด้วยตนเอง
Jason Tan

คุณใช้วิธีใดในการเชื่อมต่อกับมันในปัจจุบันและกระบวนการของคุณในการสร้าง certs สำหรับมันคืออะไร?
อีไล

ฉันได้แก้ไขคำถามหลักเพื่อรวมวิธีปัจจุบัน
Jason Tan

1
คุณสามารถนำเข้าใบรับรอง & คีย์ส่วนตัวหากคุณสร้างมันบนเครื่องอื่นและส่งออกได้หรือไม่
Clint

คำตอบ:


15

หากแชสซีของคุณไม่รองรับการเพิ่ม SAN คุณจะต้องถอดกุญแจออกจากแชสซีและสร้าง CSR ด้วย openssl

ตรวจสอบให้แน่ใจว่าreq_extensions = v3_reqไม่มีการใส่เครื่องหมายใน[ req ]ส่วน

เพิ่มsubjectAltNameไปยัง[ v3_req ]ส่วน

สร้าง CSR ใหม่

openssl req -new -key extracted_c7000.key -out your_new.csr

คุณไม่สามารถแก้ไข CSR ที่มีอยู่


สิ่งที่ CakeMox พูด หากคุณสามารถแก้ไขใบรับรอง (นั่นคือ CSR ที่ลงนามแล้ว) หลังจากที่ลงนามแล้วมันจะเอาชนะจุดประสงค์ทั้งหมดของการรับรองสิทธิ์
MadHatter

ฉันไม่ต้องการแก้ไข CSR หลังจากเซ็นชื่อ - นั่นจะเป็นไปตามที่คุณบอกว่าจะเอาชนะดักแด้ ฉันต้องการแก้ไข CSR หลังจากที่สร้าง แต่ก่อนที่จะมีการลงชื่อ เป็นไปได้ที่จะแก้ไขบางส่วนของ CSR ก่อนที่จะเซ็นชื่อโดยใช้ openssl
Jason Tan

ถ้าฉันสามารถดาวน์โหลดกุญแจฉันจะ ขออภัยฉันไม่ได้กล่าวถึงสิ่งนั้นในคำถามเดิม แต่ฉันไม่สามารถหาทางดาวน์โหลดคีย์ได้ ฉันยินดีที่จะจ่ายเงินรางวัลให้กับผู้ที่สามารถบอกวิธีดาวน์โหลดคีย์ได้
Jason Tan

FYI - เป็นไปได้ที่จะแก้ไขบางส่วนของ CSR ก่อนที่จะเซ็นชื่อโดยใช้ openssl โดยเฉพาะตัวเลือก "openssl req -subj" อย่างไรก็ตามมันจะไม่เท่าที่ฉันสามารถบอกให้เพิ่มส่วนขยาย v3 SAN ได้มันจะช่วยให้คุณสามารถระบุหัวเรื่องใหม่รวมถึง CNs เพิ่มเติมได้
Jason Tan

2
CSR ถูกลงนามโดยไพรเวตคีย์ของเครื่องดังนั้นคุณจึงไม่สามารถแก้ไขได้หลังจากถูกสร้างขึ้น (มิฉะนั้นจะไม่สามารถลงชื่อได้อีกต่อไป) เป็นไปได้ว่า CA จะแก้ไขฟิลด์ที่ใส่ในใบรับรองสาธารณะอย่างไรก็ตาม นี่เป็นวิธีเดียวในการเปลี่ยนฟิลด์ SAN (ซึ่งคุณไม่สามารถควบคุมได้หากคุณส่งข้อมูลนี้ไปยัง CA สาธารณะ)
Chris S

0

หมายเหตุสำคัญ: ทั้งหมดนี้ค่อนข้างเป็นการเก็งกำไรดังนั้นหากคุณลึกล้ำในรหัสและไม่เห็นด้วยกับสิ่งที่ฉันพูดเชื่อรหัส ฉันไม่ใช่ผู้เชี่ยวชาญของ CA ฉันเพิ่งเล่นในทีวี ที่กล่าวว่า:

ในฐานะที่เป็นคุณสมบัติของ CSRs มันจะเป็นเรื่องยาก ขั้นตอนสุดท้ายในการสร้าง CSR โดยทางโปรแกรมคือการแฮชทุกสิ่งที่คุณสร้างจากนั้นลงชื่อด้วยคีย์ส่วนตัว ดังนั้นในขณะที่คุณสามารถเพิ่มแอททริบิวเหล่านั้นลงในข้อความของ CSR ลายเซ็นจะไม่ตรงกับเนื้อหาดังนั้นจึงไม่มี CA จะเซ็นชื่อ

ในกรณีของคุณคุณสามารถควบคุม (หรืออย่างน้อยก็ติดต่อด้วย) CA สิ่งนี้มีสองตัวเลือกให้คุณ:

  1. คุณสามารถสั่งให้ CA เพิกเฉยลายเซ็นบน CSR และออกใบรับรองได้
  2. คุณสามารถให้ CA ออกใบรับรองที่แตกต่างจากที่ร้องขอ (เช่นโดยการเพิ่มคุณสมบัติ)

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


เกี่ยวกับการวิจัยเพิ่มเติม # 2 ตัวเลือกเป็นจริงค่อนข้างง่ายเกินไปและทำโดยจำนวนของ CA (เช่นเพื่อเพิ่มsite.comไปยังwww.site.comใบรับรองเป็น SAN)
BMDan

0

ในขณะที่คำตอบของ cakemox นั้นเป็นวิธีที่ง่ายที่สุดถ้าคุณสามารถรับรหัสส่วนตัวได้ แต่ก็มีวิธีอื่นถ้าคุณไม่สามารถลงชื่อ CSR ได้อีกครั้งโดยใช้ใบรับรอง "ตัวแทนการลงทะเบียน"

โพสต์บล็อก css-security.comนี้มีรายละเอียดที่เป็นประโยชน์ทั้งหมด แต่ภาพรวมระดับสูงของกระบวนการมีลักษณะดังนี้:

  • รับใบรับรองตัวแทนการลงทะเบียน
  • แก้ไขเท็มเพลตใบรับรอง SSL เพื่อต้องการใบรับรอง EA สำหรับการออก
  • รับ CSR ที่ต้องการข้อมูล SAN
  • ใช้ใบรับรอง EA เพื่อลาออก CSR ขณะที่เพิ่มข้อมูล SAN

เมื่อฉันลองทำสิ่งนี้เป็นการส่วนตัวฉันค่อนข้างแน่ใจว่าฉันข้ามส่วนเกี่ยวกับการแก้ไขแม่แบบใบรับรอง สมมติว่าคุณสามารถสร้างใบรับรองตัวแทนการลงทะเบียนได้ด้วยตัวเองกระบวนการจริงจะมีลักษณะดังนี้

สร้าง san.inf ด้วยข้อมูลส่วนขยาย SAN

[Extensions]
2.5.29.17="{text}dns=mysan1.example&dns=mysan2.example"

ลงชื่อคำขออีกครั้ง

certreq -policy -config "myca.example\CA" orig-request.csr san.inf corrected-request.csr

ส่งคำขอที่ถูกต้อง

certreq -submit -config "myca.example\CA" -attrib "CertificateTemplate:MyTemplate" corrected-request.csr

จากนั้นดำเนินการตามปกติด้วยกระบวนการออก

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