IIS 7 ยังคงให้บริการใบรับรอง SSL เก่า


27

ฉันติดตั้งใบรับรอง SSL ใหม่ลงใน IIS7 ลบใบรับรองเก่าและตั้งค่าการผูกสำหรับใบรับรองใหม่ตอนนี้ https จึงถูกผูกไว้กับใบรับรองใหม่เท่านั้น

ฉันรีสตาร์ท IIS7 (และ Windows Server 2008 เอง) และตรวจสอบใบรับรองโดยใช้คำสั่ง:

netsh http show sslcert

นี่แสดงใบรับรองใหม่เท่านั้นตามที่ฉันคาดไว้

certutil -store MY

นี่แสดงให้เห็นเพียงใบรับรองใหม่และไม่ใช่ใบรับรองเก่าอย่างที่ฉันคาดไว้

ฉันยังเปิด mmc และตรวจสอบใบรับรองที่นั่นและฉันเห็นใบรับรองใหม่ไม่ใช่ใบรับรองเก่า

ฉันใช้บัญชีที่มีสิทธิ์ของผู้ดูแลระบบด้วย

อย่างไรก็ตาม - เมื่อฉันเปิดเบราว์เซอร์ (จากคอมพิวเตอร์เครื่องใดก็ได้) และไปที่ไซต์ https มันยังคงใช้ใบรับรองเก่าอยู่ แม้ว่าฉันจะลบใบรับรองเก่าออกจากเบราว์เซอร์ แต่ก็ยังได้รับใบรับรองเก่าไม่ใช่ใบรับรองใหม่

ทุกคนสามารถช่วยฉันทำงานที่ฉันจะผิดได้ไหม? ฉันจะขับผีใบรับรองผีเก่าได้อย่างไร?

คำตอบ:


28

ก่อนอื่นคะแนนสองเท่าที่อาจเหมือนกันสำหรับคุณ

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

ก่อนอื่นฉันขอแนะนำอย่างยิ่งว่าให้ไปhttps://www.digicert.com/help/และดาวน์โหลดเครื่องมือ DigiCert ของพวกเขา คุณยังสามารถใช้งานออนไลน์ได้

ป้อนในเว็บไซต์ของคุณhttps://example.comแล้วมันจะแสดงวันหมดอายุและรหัสประจำตัว (MS ใดที่เรียกแฮชใบรับรอง) เป็นการค้นหาตามเวลาจริงดังนั้นคุณไม่ต้องกังวลว่าเบราว์เซอร์ของคุณ (หรือเซิร์ฟเวอร์กลาง) กำลังแคชบางอย่างอยู่หรือไม่

หากคุณใช้ที่เก็บใบรับรองส่วนกลางคุณจะต้องมั่นใจ 100% ว่าไฟล์. pfx เป็นรุ่นล่าสุดดังนั้นให้ไปที่ไดเรกทอรีร้านค้าของคุณและเรียกใช้คำสั่งนี้:

C:\WEBSITES\SSL> certutil -dump www.example.com.pfx

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

หากคุณกำลังใช้ CCS อยู่สมมติว่าคำสั่ง certutil นี้ให้วันหมดอายุที่คาดหวัง (ของใบรับรองที่อัปเดตของคุณ) คุณสามารถดำเนินการต่อได้

เรียกใช้คำสั่ง:

netsh http show sslcert > c:\temp\certlog.txt
notepad c:\temp\certlog.txt

คุณน่าจะมีหลายอย่างในที่นี่ดังนั้นจึงง่ายที่จะเปิดในเครื่องมือแก้ไขข้อความ

คุณจะต้องการค้นหาแฮชที่ผิดพลาดที่คุณได้รับจากไฟล์นี้digicert.com(หรือรหัสประจำตัวที่คุณได้รับจากโครม)

สำหรับฉันนี้ให้ผลดังต่อไปนี้ คุณจะเห็นว่ามันถูกผูกไว้กับ IP และไม่ใช่ชื่อโดเมนที่ฉันคาดไว้ ปัญหานี้เป็นปัญหา. ดูเหมือนว่าที่นี้ (ด้วยเหตุผลใดก็ตามผมไม่แน่ใจ) จะเหนือกว่าชุดที่มีผลผูกพันใน IIS example.comที่ฉันปรับปรุงเพียงสำหรับ

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

ฉันไม่รู้ด้วยซ้ำว่าการเชื่อมโยงนี้มาจากที่ใด - ฉันไม่มีการผูก SSL ในไซต์เริ่มต้นของฉัน แต่เซิร์ฟเวอร์นี้มีอายุไม่กี่ปีและฉันคิดว่ามีบางสิ่งที่เสียหายและติดอยู่

ดังนั้นคุณจะต้องลบมัน

เพื่อให้ปลอดภัยคุณต้องเรียกใช้คำสั่งต่อไปนี้ก่อนเพื่อให้แน่ใจว่าคุณลบรายการนี้เพียงรายการเดียว:

C:\Windows\system32>netsh http show sslcert ipport=10.0.0.1:443

SSL Certificate bindings:
-------------------------

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

ตอนนี้เราได้ตรวจสอบแล้วว่านี่เป็นลายนิ้วมือที่ 'ไม่ดี' และคาดว่าจะสามารถลบมันได้ด้วยคำสั่งนี้:

C:\Windows\system32>netsh http delete sslcert ipport=10.0.0.1:443

SSL Certificate successfully deleted

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

อาจต้องการ IISRESET ที่นี่เพื่อให้แน่ใจว่าไม่น่าแปลกใจในภายหลัง

หมายเหตุสุดท้าย: หากคุณใช้ที่เก็บใบรับรองส่วนกลางและคุณเห็นพฤติกรรมที่ผิดปกติที่พยายามตรวจสอบว่ามีการเก็บใบรับรองจากที่นั่นหรือไม่ไม่ต้องกังวล - ไม่ใช่ความผิดของคุณ ดูเหมือนว่าบางครั้งจะรับไฟล์ใหม่ทันที แต่แคชไฟล์เก่า การเปิดและบันทึกการผูก SSL ใหม่หลังจากทำการเปลี่ยนแปลงใด ๆ ดูเหมือนว่าจะรีเซ็ต แต่ไม่ใช่ 100% ของเวลา

โชคดี :-)


3
คุณเป็นไซมอนในหมู่ไซมอนส์ ในกรณีของเรามันกลับกลายเป็นว่าเซิร์ฟเวอร์ของเราได้ 'ที่แคช' ใบรับรองหมดอายุภายใต้[::1]:443ขณะที่การปรับปรุงใบรับรองใน IIS 0.0.0.0:443ปรับปรุงเพียงบันทึกสำหรับ ขอขอบคุณ!
อังคารที่

1
วิธีนี้แก้ไขปัญหาของฉันกับหลายโดเมนใน IP เดียวกัน ไม่ได้ใช้ที่เก็บใบรับรองส่วนกลาง
Chris F Carroll

1
ฉันต้องใช้มันสองสามครั้ง ซอฟต์แวร์การจัดการเว็บโฮสติ้ง PLESK บางครั้งทำให้การผูกใบรับรองยุ่งเหยิงและในที่สุดฉันก็จำเป็นต้องใช้คำสั่ง netsh ด้านบนเพื่อลบการเชื่อมโยงที่ละเมิด ไม่แน่ใจว่าเวอร์ชันใดที่ได้รับผลกระทบ แต่ฉันใช้ PLESK Onyx เวอร์ชันปัจจุบันบน Windows Server 2016
BenSwayne

ในกรณีของฉันมันเป็นชื่อโฮสต์และพอร์ต ดังนั้นในการกรองและลบโดยชื่อโฮสต์คำสั่งจะเป็น: "netsh http show sslcert hostnameport = www.example.com: 443" และ "netsh http ลบ sslcert hostnameport = www.example.com: 443"
Karthik Jayapal

14

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


ฉันตรวจสอบแล้วและใบรับรองในการเชื่อมสำหรับพอร์ต 443 เป็นใบรับรองใหม่ไม่ใช่ใบรับรองเก่า ขอบคุณสำหรับคำแนะนำของคุณ
joechip

1
แปลกฉันไม่เคยมีสิ่งนี้เกิดขึ้น แม้ว่าฉันจะไม่ลบใบรับรองเก่าออก คุณแน่ใจได้อย่างไรว่าคุณยังได้รับใบรับรองเก่า มันแสดงให้เห็นว่ามันหมดอายุหรือไม่
Tatas

ใช่ในเบราว์เซอร์คุณสามารถตรวจสอบรายละเอียดของใบรับรอง (วันหมดอายุ ฯลฯ ) และเป็นของเก่าที่ IIS7 ให้บริการ
joechip

1
ฉันเคยเห็นสิ่งนี้ด้วย - Chrome Chrome แคชใบรับรองเก่าและแสดงให้ผู้ใช้เห็น
TomTom

3

ฉันเพิ่งทำมันออกมา เซิร์ฟเวอร์นั่งด้านหลังเซิร์ฟเวอร์ ISA ดังนั้นเราจึงต้องติดตั้งใบรับรอง SSL ใหม่ไปยังเซิร์ฟเวอร์ ISA


3

ฉันมีปัญหาเดียวกันและตรวจสอบการผูกยัง ฉันติดตั้งแอพ 2 ตัวใน IIS หนึ่งรายการใช้ใบรับรองใหม่หนึ่งรายการใช้เก่า

ในการแก้ไขฉันต้องลบใบรับรองออกจากเซิร์ฟเวอร์อย่างสมบูรณ์ (อาจเป็นรีบูต)

จาก IIS Manager -> (รูททรีของ IIS) -> ไอคอนใบรับรองเซิร์ฟเวอร์เลือกใบรับรองเก่าและคลิกลบในบานหน้าต่างการทำงาน


1
ในทำนองเดียวกันเรามีเว็บไซต์ STOPPED เพิ่มเติมซึ่งอ้างอิงใบรับรองเก่าและเมื่อเราอัปเดตไซต์นั้นเพื่อใช้ใหม่ไซต์สดจริงเริ่มแสดงใบรับรองใหม่!
การกระทำ Dan

1

ฉันพบสิ่งนี้ระหว่างการอัพเกรด IPv6 ฉันให้ IIS เปลี่ยนเส้นทางในกรณีที่มีคนพยายามเข้าถึงบริการผ่าน HTTP ซึ่งไม่ใช่บริการบนเว็บเซิร์ฟเวอร์ ฉันอัปเดตบริการจริง (เซิร์ฟเวอร์เสียง) เป็น IPv6 อย่างไรก็ตามฉันไม่สามารถอัปเดตการเชื่อมโยงสำหรับการเปลี่ยนเส้นทางเพื่อรวมที่อยู่ IPv6

สิ่งนี้ส่งผลให้การแก้ปัญหาล้มเหลวในการจับทั่วโลกจับเว็บไซต์ทั้งหมดที่มีใบรับรองที่ล้าสมัยอยู่ ตั้งแต่การจับทั้งหมดเพียง 404 ของมันก็ปรากฏว่าเว็บไซต์ไม่ทำงานเมื่อในความเป็นจริงมันก็ตีเว็บไซต์ผิด


0

ในกรณีที่มีคนยังคงสะดุดกับปัญหานี้ ฉันแก้ไขได้โดยไปที่

C:\inetpub\wwwroot

จากนั้นคุณจะพบไฟล์ web.config เปิดโดยใช้ notepad และลบบรรทัดด้วย

<httpRedirect enabled="true" destination="http://foo.company.org" />

บันทึกและลองอีกครั้งเพื่อเข้าถึง localhost หรือไซต์รากของเซิร์ฟเวอร์ IIS ของคุณ

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