IIS 7.0 - ใบรับรอง SSL - ต่ออายุหรือใหม่


13

หนึ่งในใบรับรอง SSL ของฉัน (การตรวจสอบโดเมนอย่างง่ายเท่านั้น) กำลังจะหมดอายุบนเซิร์ฟเวอร์ windows 2003 IIS 7.0

ฉันได้รับข้อเสนอที่ดีกว่าจากผู้ขายรายอื่นและผู้ที่ออกใบรับรองของฉันไม่ต้องการเจรจาราคาที่ต่ำกว่า

อย่างไรก็ตาม - ตัวช่วยสร้างใบรับรองใน IIS จะมีตัวเลือก "ต่ออายุ" หรือ "ถอนการติดตั้ง" แล้วติดตั้งใบรับรองใหม่

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

ปัญหาคือว่าฉันไม่ต้องการหยุดเซิร์ฟเวอร์ (ส่วนที่ปลอดภัยอย่างน้อย) เนื่องจากการลบใบรับรองเก่าและสร้าง CSR ใหม่และรอให้ใบรับรองใหม่ติดตั้ง

หรือมีตัวเลือกในการเตรียม CSR ใหม่โดยไม่ลบใบรับรองเก่าหรือไม่

คำตอบ:


7

คุณจะต้องสร้างเว็บไซต์ชั่วคราวด้วย IIS 6.0 IIS 7.0 ช่วยให้คุณสร้างการร้องขอที่ค้างอยู่หลายครั้ง

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

ผู้ให้บริการออกใบรับรอง (CA) ไม่สนใจว่าคุณจะใช้ตัวเลือกใหม่หรือตัวเลือกการต่ออายุและคุณสามารถใช้ตัวเลือกอย่างใดอย่างหนึ่งไม่ว่าคุณจะอยู่กับ CA เดียวกันหรือสั่งซื้อจากใหม่


7

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

เพื่อสร้างการร้องขอใหม่โดยไม่ทำให้ IIS หมดลง

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

สรุปสาระสำคัญที่เรียบง่ายของกระบวนการคือคุณจะสร้างไฟล์ INF certreq -new file.inf file.reqมีข้อมูลที่จำเป็นต้องวิ่ง เมื่อคุณมีไฟล์คำขอคุณสามารถส่งไปยัง CA ที่คุณต้องการออกใบรับรองของคุณแล้วยอมรับรหัสสาธารณะที่พวกเขาส่งให้คุณด้วยคำสั่งcertreq -accept file-from-ca.req

ตัวอย่าง request.inf

[Version]
Signature="$Windows NT$"

[NewRequest]
Subject = "CN=fully.qualified.domain.name, OU=Organizational Unit, O=Company, L=City, S=State, C=Country"
KeySpec = 1
KeyLength = 2048
HashAlgorithm = SHA256
Exportable = FALSE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
RequestType = PKCS10
KeyUsage = 0xa0
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
FriendlyName = ""

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication

[RequestAttributes]
CertificateTemplate = WebServer

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=&"
_continue_ = "DNS="

ตัวอย่างข้างต้น inf คือสิ่งที่ฉันใช้ภายในสำหรับ CA ของฉันเอง แต่สามารถปรับให้ทำงานในสภาพแวดล้อมส่วนใหญ่ได้ คุณสามารถตั้งค่าExportableเป็น TRUE หากคุณต้องการเก็บคีย์ของคุณ FriendlyNameเป็นตัวเลือกที่สมบูรณ์แบบและExtensionsส่วนสำหรับการใช้ชื่อ DNS อื่น (เรื่องทางเลือกชื่อ)

ตัวอย่างของรายการ SAN คือ:

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=example.com&"
_continue_ = "DNS=www.example.com&"
_continue_ = "DNS=secure.example.com"

นั่นจะทำให้คุณสามารถใช้ใบรับรองเดียวกันกับเว็บไซต์ทั้งสามด้านบนโดยไม่ต้องบ่นว่ามีชื่อไม่ตรงกัน (บนเบราว์เซอร์สมัยใหม่ - ฉันไม่คิดว่า IE6 จะเข้าใจมัน) สิ่งสำคัญคือคุณต้องรวมชื่อโดเมนแบบเต็ม (CN ของบรรทัดหัวเรื่อง) ใน SAN หากคุณตั้งค่านั้น คุณสามารถลบส่วนขยายออกได้อย่างสมบูรณ์เช่นกันหากคุณไม่จำเป็นต้องใช้ชื่อโดเมนหลายชื่อ (เช่นกัน CA บางตัวอาจไม่รองรับ)

กระบวนการ

เมื่อคุณบันทึกข้อมูลข้างต้นแล้ว (ฉันรู้ว่ามันเยอะ) ทำตามขั้นตอนเหล่านี้:

  1. เปิดพรอมต์คำสั่งและ cd ไปยังไดเรกทอรีที่คุณบันทึก inf ข้างต้น
  2. วิ่ง certreq -new above.inf request.req
  3. ส่งไฟล์ request.req ไปที่ CA ของคุณ พวกเขาจะดำเนินการและอนุมัติ / ปฏิเสธ
  4. เมื่อพวกเขาอนุมัติก็ควรส่งรหัสสาธารณะของคุณกลับมาในไฟล์. cer
  5. เรียกใช้certreq -accept file-from-ca.cerเพื่อสิ้นสุดการตั้งค่าคีย์

โชคดี!

แก้ไข

ไวยากรณ์เต็มรูปแบบสำหรับ certreq และแฟ้ม INF สามารถพบได้ที่ภาคผนวก 3: Certreq.exe ไวยากรณ์ (Windows Server 2003 SP1) FriendlyNameและHashAlgorithmมี Server 2008 (และ R2) เท่านั้น คุณสามารถดูรายการผู้ให้บริการการเข้ารหัสที่ได้รับการสนับสนุนโดยเรียกใช้คำสั่งcertutil -csplistและดูผลลัพธ์ กล่อง Windows 2003 SP2 ปัจจุบันมี "Microsoft RSA SChannel Cryptographic Provider" อยู่ในรายการเป็นผู้ให้บริการที่มีอยู่ดังนั้นโปรดตรวจสอบให้แน่ใจว่าไฟล์ของคุณมีการตั้งราคาที่ถูกต้องและรายการนั้นอยู่ในหนึ่งบรรทัดเท่านั้น

นอกจากนี้คุณยังสามารถเปลี่ยนจากการ ProviderName ProviderType certreq -csplistและใช้หมายเลขที่ให้ไว้โดยการส่งออกของ

ในกรณีนี้ฉันได้รับผลลัพธ์ต่อไปนี้:

Provider Name: Microsoft RSA SChannel Cryptographic Provider
Provider Type: 12

ดังนั้นฉันสามารถใช้

ProvderName = "Microsoft RSA SChannel Cryptographic Provider"

หรือ

ProviderType = 12

ขอบคุณ ฉันจะเตรียมมันด้วยตนเองได้อย่างไร
ซันนี่

นอกจากนี้ - ยังเป็นคำถามที่รออนุมัติ - สำคัญหรือไม่สำหรับ "ต่ออายุ" ที่ใบรับรองจะออกโดยผู้ขายรายใหม่
ซันนี่

เท่าที่ฉันทราบการต่ออายุจำเป็นต้องใช้ CA ผู้ออกใบรับรองเดียวกันเพื่อส่งใบรับรองการรีเฟรชให้คุณเนื่องจากการต่ออายุจะเก็บคีย์สาธารณะและคีย์ส่วนตัว CA อื่นจะมีชุดคีย์ที่แตกต่างกันเพื่อเซ็นชื่อด้วยดังนั้นคู่คีย์สาธารณะ / ส่วนตัวของคุณจะแตกต่างกัน
Joshua

Joshua จะรายงานสิ่งนี้: ผู้ดำเนินการร้องขอใบรับรอง: ข้อมูลไม่ถูกต้อง 0x8007000d (WIN32: 13) mycert.inf (HashAlgorithm = "SHA256") คุณแน่ใจหรือว่าสิ่งนี้ควรใช้งานได้? ในต้นกำเนิด บทความที่คุณเชื่อมโยงไปไม่มีการตั้งค่าดังกล่าว
ซันนี่

ฉันลบการตั้งค่า HashAlgorithm และ FriendlyName (ตามที่บ่นเกี่ยวกับพวกเขา) และไม่ได้รับ: ผู้ดำเนินการร้องขอใบรับรอง: ประเภทผู้ให้บริการไม่ตรงกับค่าที่ลงทะเบียน 0x8009001b (-2146893797) เลวร้ายเกินไป.
ซันนี่

1

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

จากนั้นบนไซต์หลัก (จริง) ของฉันฉันต้องแทนที่ใบรับรองปัจจุบันจากนั้นลบอุณหภูมิชั่วคราว

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