ฉันจะกู้คืนใบรับรอง IIS Express SSL ที่หายไปได้อย่างไร


138

หลังจากตั้งค่า HTTPS ใน IIS Express ตามบทความเช่นนี้และสิ่งนี้ฉันไม่สามารถโหลดไซต์ IIS Express โดยใช้ HTTPS ได้ ในChromeฉันได้รับเพียง:

ไม่มีหน้าเว็บนี้ (มีรหัสข้อผิดพลาด "ERR_CONNECTION_RESET")

... และในIEฉันได้รับเพียง:

Internet Explorer ไม่สามารถแสดงเว็บเพจ

... เมื่อฉันทำตามคำแนะนำในบทความเหล่านั้น

ดูเหมือนว่าสิ่งนี้เกี่ยวข้องกับข้อเท็จจริงที่ว่า "ใบรับรองการพัฒนา IIS Express" ที่ติดตั้ง IIS Express โดยอัตโนมัติถูกลบออกไป ฉันจะติดตั้งใบรับรองนี้ใหม่ได้อย่างไร


2
ยังเกิดขึ้นกับฉันที่พยายามเรียกใช้ IISExpress บนพอร์ต 443 (หรือจริงๆแล้วบนพอร์ตใด ๆ นอกช่วง 44300-44399)
Gerardo Grignoli

หมายเหตุ: คำตอบที่ยอมรับสำหรับคำถามนี้สามารถใช้ได้แม้ในที่ที่มีใบรับรอง IIS Express localhost อยู่และดูเหมือนจะใช้ได้
haymansfield

สำหรับ Visual Studio 2017 โปรดดูที่stackoverflow.com/questions/44142037/…
RickAndMSFT

คำตอบ:


195

หลังจากไปที่ Add / Remove Programs และเลือกตัวเลือก "Repair" บน IIS Express ใบรับรองได้รับการติดตั้งใหม่และตอนนี้ฉันสามารถเปิดไซต์ IIS Express โดยใช้ HTTPS ได้

ซ่อม IIS Express

ใบรับรองกลับมาแล้ว:

ใบรับรองการพัฒนา IIS Express

และตอนนี้ฉันสามารถเปิดไซต์ IIS Express โดยใช้ HTTPS:

สำเร็จ!


1
ได้ผลสำหรับฉันเช่นกัน แต่ในกรณีของฉันใบรับรองอยู่ที่นั่น ไม่แน่ใจว่าเพราะเหตุใด แต่ส่งผลให้เกิดข้อผิดพลาดเดียวกัน ดังนั้นฉันจึงลบใบรับรองและ 'ซ่อมแซม' ติดตั้งด้านหลังนี้ใหม่และ voila ขอบคุณมาก.
Darius

41
หมายเหตุสำหรับผู้ใช้ Windows 10: การซ่อมแซมจะอยู่ในแผงควบคุมเท่านั้นไม่ใช่ในแอป Add Remove programs msft ความคิดที่ยอดเยี่ยม
Chris Weber

1
วิธีที่เร็วกว่ามากคือเปิด Jexus Manager และสร้างใบรับรองใหม่จากนั้นเชื่อมโยงกับไซต์ของคุณ jexusmanager.comแน่นอนว่ามันยังไม่ได้แก้ไขการผูกใบรับรองที่ใช้งานไม่ได้และฉันจะดูวิธีทำให้ฟีเจอร์นั้นเป็นแบบคลิกเดียว
Lex Li

การซ่อมแซมใช้งานได้ แต่ฉันต้องลบใบรับรองที่มีอยู่โดยใช้ MMC ปัญหาที่ฉันพบคือฉันไม่ได้ลบออกในฐานะผู้ดูแลระบบจาก localMachine ตรวจสอบให้แน่ใจว่าคุณเรียกใช้ MMC ด้วยสิทธิ์ที่สูงขึ้น!
ranieuwe

6
หมายเหตุสำหรับผู้ใช้ VS2019: "ซ่อมแซม" จะไม่ทำงานเนื่องจาก Visual Studio Installer ไม่ได้ใส่ไฟล์ MSI ในที่ที่แผงควบคุมคาดว่าจะเป็น อย่างไรก็ตามมี_package.json ไฟล์อยู่ในไดเร็กทอรีเดียวกันและมี URL ของไฟล์ MSI คุณอาจเรียกใช้ด้วยตนเองหรือคัดลอกไปยังตำแหน่งที่แผงควบคุมคาดหวัง
Chris

165

สำหรับ Visual Studio 2015, IIS Express 10, Windows 10 ตัวเลือกเหล่านี้ไม่ได้ผลสำหรับฉัน IIS Express 10 ไม่มีตัวเลือกการซ่อมแซม

ฉันจัดการเพื่อแก้ปัญหาโดยใช้IisExpressAdminCmd.exeคำสั่งที่C:\Program Files (x86)\IIS Express.

จากพรอมต์คำสั่งที่ยกระดับให้รัน:

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:urlToYourSite -UseSelfSigned

การแทนที่ urlToYourSite ด้วย url ของคุณ

เช่น

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:44387/ -UseSelfSigned

หลังจากนั้นฉันปิด IIS Express และเริ่มไซต์ของฉันใหม่จาก Visual Studio และได้รับแจ้งให้เชื่อถือใบรับรองที่ลงนามด้วยตนเองโดยอัตโนมัติ

หวังว่าจะช่วยได้


3
สิ่งนี้ใช้ได้ผลสำหรับฉันที่พยายามเรียกใช้ IISExpress บนพอร์ต 443 +1
Gerardo Grignoli

วิธีนี้ใช้ได้ผลดีสำหรับฉัน Windows 10, Visual Studio 2015, IIS Express 10.
Glenn

1
หากใครที่นี่ประสบปัญหาในการรับพอร์ตเฉพาะที่ใช้โดย IIS Express คุณอาจต้องการตรวจสอบว่ามีใครบางคนที่ลงทะเบียนใน IIS โดยใช้พอร์ตนั้นหรือไม่ นั่นคือวันของฉันวันนี้
Chris Marisic

2
ใน Windows 10 IIS Express มีตัวเลือกการซ่อมแซม คุณต้องผ่านแผงควบคุม คำตอบที่ยอมรับได้ผลสำหรับฉัน
joerage

1
ในกรณีที่คุณเบื่อกับการใช้ command line คุณสามารถใช้ Jexus Manager เพื่อทำเช่นเดียวกันblog.lextudio.com/…
Lex Li

40

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

  1. เปิดสแนปอิน MMC ของใบรับรองตามที่อธิบายไว้ที่นี่
  2. ค้นหาใบรับรอง localhost ของคุณเช่นภายใต้ Personal ... Certicates และรับรหัสประจำตัว:
    1. เปิดกล่องโต้ตอบคุณสมบัติสำหรับใบรับรอง localhost และค้นหาคุณสมบัติ Thumbprint
    2. วางค่ารหัสประจำตัวลงใน Notepad (หรืออะไรก็ได้) และลบช่องว่างและอักขระพิเศษที่จุดเริ่มต้น
  3. ค้นหามูลค่าพอร์ตของโครงการ IIS Express ของคุณ:
    1. ไปที่คุณสมบัติโครงการใน Visual Studio และค้นหาค่า "SSL URL" เช่น " https: // localhost: 44300 / MyApp "
    2. ในตัวอย่างนี้ 44300 คือหมายเลขพอร์ต หากของคุณแตกต่างออกไปให้เปลี่ยนค่านั้นในคำสั่งในภายหลัง
  4. ใช้คำสั่งต่อไปนี้ในพรอมต์คำสั่งการดูแลระบบ (ไม่ใช่ Powershell):

netsh http delete sslcert ipport=0.0.0.0:44300

netsh http add sslcert ipport=0.0.0.0:44300 certhash=your_cert_hash_with_no_spaces appid= {123a1111-2222-3333-4444-bbbbcccdddee}

Guid ในคำสั่งด้านบนสามารถแทนที่ด้วย Guid ที่คุณสร้างขึ้น ไม่สอดคล้องกับค่า IIS Express ใด ๆ ที่มีอยู่

สำหรับการอ้างอิงต่อไปดูการจัดการความล้มเหลว URL ผูกพันใน IIS ด่วน


2
วิธีที่มองเห็นได้ชัดเจนขึ้นคือใช้ Jexus Manager, blog.lextudio.com/…จากนั้นคุณไม่ต้องจำรายละเอียดเช่นแฮชใบรับรอง
Lex Li

หากคุณได้รับ "พารามิเตอร์ไม่ถูกต้อง" ข้อผิดพลาด - ใช้ appid นี้ก่อนแล้วจึงรับรอง ตัวอย่าง: netsh http add sslcert ipport = 0.0.0.0: 44300 appid = {C21B9F4D-2A5D-4160-81C8-FBCC3EFC335E} certhash = your_cert_hash_with_no_spaces
gmsi

37

โปรดทราบว่าเพื่อให้ IIS Express ทำงานกับ SSL ได้พอร์ตที่ใช้จะต้องอยู่ในช่วง 44300 ถึง 44399 ( http://www.iis.net/learn/extensions/using-iis-express/running-iis-express- ไม่มีสิทธิ์ระดับผู้ดูแลระบบ )

ดังนั้นหากคุณใช้ IIS Express ใน Visual Studio ตรวจสอบให้แน่ใจว่าพอร์ตที่เลือกอยู่ในช่วงที่ต้องการ: เทียบกับการตั้งค่าสำหรับ iis express


3
ฉันสามารถใช้พอร์ตนอกช่วงนี้ได้หลังจากใช้คำสั่งในคำตอบของ Bernie White โดยไม่มีปัญหาใด ๆ Windows 10 / Visual Studio Community 2015 / .Net Core 1.0.1 / IIS Express 10.0
Ryan Thomas

1
ขอบคุณ! สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้ แปลกที่ Visual Studio ไม่เตือนเรื่องนั้น
Erwin Mayer

4
44300-44399 เป็นเพียงช่วงพอร์ตเริ่มต้นที่มีการแมปใบรับรอง คุณสามารถสร้างการแมปใบรับรองที่คล้ายกันได้อย่างง่ายดายโดยการโทรnetshหรือใช้ Jexus Manager, blog.lextudio.com/…
Lex Li

12

Chrome 58 ใหม่ไม่มีคำตอบด้านล่างจะช่วยอะไรได้ ฉันเพิ่งใช้เวลา 1 ชั่วโมงในการถอนการติดตั้ง / ติดตั้งใบรับรองใหม่และพยายามค้นหาว่าปัญหาอยู่ที่ใด

เห็นได้ชัดว่า Chrome 58 จะปฏิเสธใบรับรองเนื่องจาก "missing_subjectAltName"

วิธีแก้ปัญหาคือข้อความรหัสผ่าน "badidea" หรือหากคุณต้องการเปิดป๊อปอัปเพื่อเข้าสู่ระบบคุณต้องใช้:

chrome: // ธง / # allow-insecure-localhost

แหล่งที่มาคือและ upvote เป็นของ: https://stackoverflow.com/a/38926117/2089232 :)



1
นอกจากนี้โปรดดูblog.lextudio.com/…
Lex Li

2

ฉันต้องการเพิ่มสิ่งนี้เพราะมันไร้สาระ แต่อาจจะช่วยใครสักคนได้ โปรดทราบว่าฉันไม่เคยเปิดคุณสมบัติโครงการของฉันมาก่อนดังนั้นฉันจึงไม่รู้ว่าสิ่งนี้เกิดขึ้นได้อย่างไร (ฉันไม่ได้เปลี่ยนแปลงตัวเองหรือมีโอกาสที่จะทำ) แต่ในโครงการ> คุณสมบัติ> เว็บ URL SSL ของฉันแสดงเป็น URL ปกติ แต่เป็น http แทน https (ก่อนหน้านี้เคยเป็น https เพราะใช้งานได้มาก่อน) ฉันทำตามขั้นตอนทั้งหมดที่ระบุไว้ในหน้านี้ถอนการติดตั้ง VS จากนั้น IIS และในที่สุดก็สังเกตเห็นข้อผิดพลาดซึ่งควรเป็นhttps: // mySSLURL (แต่ไม่มี s ใน https) เมื่อฉันเปลี่ยน http เป็น https ทุกอย่างก็ใช้ได้อีกครั้ง



0

ฉันเพิ่งมีปัญหานี้หลังจากอัปเดต VS 2017 เป็นเวอร์ชันล่าสุดและสร้างโครงการ MVC / WebAPI (.Net) ใหม่ (จากเทมเพลต) ฉันสามารถแก้ไขได้โดยปรับหมายเลขพอร์ตของฉันให้อยู่ในช่วงที่ถูกต้อง

Chorme Default Port Ranges สำหรับ DEV SSL

ซึ่งฉันสามารถหาได้ที่นี่: https://www.pluralsight.com/guides/visual-studio-2017-resolving-ssl-tls-connections-pro issues-with-iis-express

หวังว่านี่จะช่วยได้!

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