การต่ออายุใบรับรองอนุญาตให้คุณเก็บรหัสสาธารณะและรหัสส่วนตัวเดิมในขณะที่อัพเดตวันหมดอายุของใบรับรอง ข้อดีของการทำเช่นนี้คือถ้าคุณต้องเก็บรหัสประจำตัวไว้บนเราเตอร์หรืออะไรก็ตาม ฉันเชื่อว่าจำเป็นต้องใช้ 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 บางตัวอาจไม่รองรับ)
กระบวนการ
เมื่อคุณบันทึกข้อมูลข้างต้นแล้ว (ฉันรู้ว่ามันเยอะ) ทำตามขั้นตอนเหล่านี้:
- เปิดพรอมต์คำสั่งและ cd ไปยังไดเรกทอรีที่คุณบันทึก inf ข้างต้น
- วิ่ง
certreq -new above.inf request.req
- ส่งไฟล์ request.req ไปที่ CA ของคุณ พวกเขาจะดำเนินการและอนุมัติ / ปฏิเสธ
- เมื่อพวกเขาอนุมัติก็ควรส่งรหัสสาธารณะของคุณกลับมาในไฟล์. cer
- เรียกใช้
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