Làm cách nào để khôi phục Chứng chỉ SSL IIS Express bị thiếu?


134

Sau khi thiết lập HTTPS trong IIS Express, theo các bài viết như thế nàythế này , tôi không thể thực sự tải một trang web IIS Express bằng HTTPS. Trong Chrome , tôi chỉ nhận được:

Trang web này không khả dụng (với mã lỗi "ERR_CONNECTION_RESET")

... và trong IE tôi chỉ nhận được:

Internet Explorer không thể hiển thị trang web

... khi tôi làm theo chỉ dẫn trong những bài báo đó.

Có vẻ như điều này liên quan đến thực tế là "Chứng chỉ phát triển IIS Express" mà IIS Express cài đặt tự động đã bị xóa. Làm thế nào để tôi cài đặt lại chứng chỉ này?


2
Cũng xảy ra với tôi khi cố chạy IISExpress trên cổng 443 (hoặc thực tế trên bất kỳ cổng nào ngoài phạm vi 44300-44399)
Gerardo Grignoli

Lưu ý: câu trả lời được chấp nhận cho câu hỏi này được áp dụng ngay cả khi có chứng chỉ localhost IIS Express và có vẻ ổn.
haymansfield

Đối với Visual Studio 2017, hãy xem stackoverflow.com/questions/44142037/ từ
RickAndMSFT

Câu trả lời:


192

Sau khi đi đến Thêm / Xóa Chương trình và chọn tùy chọn "Sửa chữa" trên IIS Express, chứng chỉ đã được cài đặt lại và bây giờ tôi có thể khởi chạy các trang IIS Express bằng HTTPS.

Sửa chữa IIS Express

Giấy chứng nhận đã trở lại:

Chứng chỉ phát triển IIS Express

Và bây giờ tôi có thể khởi chạy trang IIS Express bằng HTTPS:

Sự thành công!


1
Làm việc cho tôi cũng vậy, nhưng trong trường hợp của tôi, chứng chỉ đã ở đó. Không chắc chắn tại sao, nhưng điều đó dẫn đến lỗi tương tự. Vì vậy, tôi đã xóa chứng chỉ và 'sửa chữa' đã cài đặt lại cái này và voila. Cảm ơn rất nhiều.
Darius

37
Lưu ý cho người dùng Windows 10: Sửa chữa chỉ trong Bảng điều khiển, không có trong ứng dụng Thêm xóa chương trình. Ý tưởng tuyệt vời msft.
Chris Weber

1
Một cách nhanh hơn nhiều là khởi chạy Trình quản lý Jexus và tạo chứng chỉ mới và sau đó liên kết với trang web của bạn. jexusmanager.com Tất nhiên nó chưa sửa các ràng buộc chứng chỉ bị hỏng và tôi sẽ xem cách làm cho tính năng đó chỉ bằng một cú nhấp chuột.
Lex Li

Việc sửa chữa hoạt động nhưng tôi đã phải xóa mọi chứng chỉ hiện có bằng MMC. Vấn đề tôi gặp phải là tôi đã không xóa họ với tư cách quản trị viên khỏi localMachine. Hãy chắc chắn rằng bạn chạy MMC với quyền cao!
ranieuwe

6
Lưu ý cho người dùng VS2019: "Sửa chữa" sẽ không hoạt động vì Trình cài đặt Visual Studio không đặt tệp MSI nơi Bảng điều khiển mong đợi. Tuy nhiên, có một _package.json tệp trong cùng thư mục đó và nó chứa URL của tệp MSI. Bạn có thể chạy thủ công hoặc sao chép nó vào nơi Bảng điều khiển mong đợi.
Chris R. Donnelly

155

Đối với Visual Studio 2015, IIS Express 10, Windows 10, các tùy chọn này không phù hợp với tôi. IIS Express 10 không có tùy chọn sửa chữa.

Tôi quản lý để giải quyết vấn đề bằng cách sử dụng IisExpressAdminCmd.exelệnh có sẵn tại C:\Program Files (x86)\IIS Express.

Từ một dấu nhắc lệnh nâng cao chạy:

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

Thay thế urlToYourSite bằng url của bạn.

ví dụ

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

Sau đó, tôi đã đóng IIS Express và khởi động lại trang web của mình từ Visual Studio và nó được nhắc tự động tin tưởng vào chứng chỉ tự ký.

Mong rằng sẽ giúp.


3
Điều này làm việc cho tôi khi cố gắng chạy IISExpress trên cổng 443. +1
Gerardo Grignoli

Giải pháp này đã làm việc rất tốt cho tôi. Windows 10, Visual Studio 2015, IIS Express 10.
Glenn

1
Nếu bất cứ ai ở đây gặp sự cố khi nhận một cổng cụ thể được sử dụng bởi IIS Express, bạn có thể muốn kiểm tra xem ai đó có trang web được đăng ký trong IIS bằng cổng đó hay không. Đó là ngày của tôi hôm nay.
Chris Marisic

2
Trong Windows 10, IIS Express tùy chọn sửa chữa. Bạn cần phải đi qua Bảng điều khiển. Câu trả lời được chấp nhận làm việc cho tôi.
tham gia

1
Trong trường hợp bạn cảm thấy mệt mỏi khi sử dụng dòng lệnh, bạn có thể sử dụng Trình quản lý Jexus để thực hiện tương tự, blog.lextudio.com / Kẻ
Lex Li

40

Đôi khi lỗi này là do một chứng chỉ khác được cài đặt cho localhost. Nếu đó là trường hợp, không cần phải khôi phục chứng chỉ IIS Express. Thay vào đó, bạn có thể làm như sau để yêu cầu IIS Express sử dụng chứng chỉ hiện có của bạn:

  1. Mở snap-in Chứng chỉ MMC như được mô tả ở đây
  2. Tìm chứng chỉ localhost của bạn, ví dụ như trong Cá nhân ... Chứng nhận và lấy dấu vân tay của nó:
    1. Đưa ra hộp thoại thuộc tính cho chứng chỉ localhost và tìm thuộc tính Thumbprint
    2. Dán giá trị vân tay vào Notepad (hoặc bất cứ thứ gì) và xóa khoảng trắng và bất kỳ ký tự đặc biệt nào ở đầu
  3. Tìm giá trị cổng của dự án IIS Express của bạn:
    1. Chuyển đến các thuộc tính dự án trong Visual Studio và tìm giá trị "URL SSL", ví dụ: " https: // localhost: 44300 / MyApp ".
    2. Trong ví dụ này 44300 là số cổng. Nếu bạn khác, thay đổi giá trị đó trong các lệnh sau.
  4. Sử dụng các lệnh sau trong dấu nhắc lệnh quản trị (không phải 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}

Hướng dẫn trong lệnh trên có thể được thay thế bằng lệnh mà bạn tạo. Nó không tương ứng với bất kỳ giá trị IIS Express hiện có.

Để tham khảo thêm, xem Xử lý lỗi liên kết URL trong IIS Express .


2
Một cách trực quan hơn là sử dụng Trình quản lý Jexus, blog.lextudio.com/ , sau đó bạn không cần phải nhớ các chi tiết như chứng chỉ băm.
Lex Li

nếu bạn nhận được "Tham số không chính xác." lỗi - sử dụng appid này trước sau đó certhash. Ví dụ: netsh http thêm sslcert ipport = 0.0.0.0: 44300 APPID = {C21B9F4D-2A5D-4160-81C8-FBCC3EFC335E} certhash = your_cert_hash_with_no_spaces
gmsi

36

Cũng lưu ý rằng để IIS Express hoạt động với SSL, cổng được sử dụng phải nằm trong phạm vi 44300 đến 44399 ( http://www.iis.net/learn/extensions/USE-iis-express/rasty-iis-express- không có hành chính-đặc quyền ).

Vì vậy, nếu bạn đang sử dụng IIS Express trong Visual Studio, hãy đảm bảo rằng cổng được chọn nằm trong phạm vi bắt buộc: so với cài đặt cho iis express


3
Tôi đã có thể sử dụng một cổng ngoài phạm vi này sau khi sử dụng lệnh trong câu trả lời của Bernie White mà không gặp vấn đề gì. Windows 10 / Cộng đồng Visual Studio 2015 / .Net Core 1.0.1 / IIS Express 10.0
Ryan Thomas

1
Cảm ơn! Điều này đã giải quyết vấn đề cho tôi. Thật kỳ lạ khi Visual Studio không cảnh báo về điều đó.
Erwin Mayer

4
44300-44399 chỉ là phạm vi cổng mặc định với chứng chỉ được ánh xạ. Bạn có thể dễ dàng tạo ánh xạ chứng chỉ tương tự bằng cách gọi netshhoặc chỉ cần sử dụng Trình quản lý Jexus
Lex Li

12

Với Chrome 58 mới, không có gì từ các câu trả lời dưới đây sẽ giúp ích. Tôi mới dành 1 giờ để gỡ cài đặt / cài đặt lại chứng chỉ và cố gắng tìm ra vấn đề ở đâu.

Rõ ràng Chrome 58 sẽ từ chối chứng chỉ vì "thiếu_subjectAltName"

Giải pháp là cụm mật khẩu "badidea" hoặc nếu bạn cần mở cửa sổ bật lên để đăng nhập, bạn phải sử dụng:

chrome: // flags / # allow-insecure-localhost

Nguồn là và upvote thuộc về: https://stackoverflow.com/a/38926117/2089232 :)



1
Đồng thời xem blog.lextudio.com/ Kẻ
Lex Li

2

Tôi muốn thêm cái này, vì nó vô lý nhưng có lẽ nó sẽ giúp được ai đó. Hãy nhớ rằng tôi chưa bao giờ mở thuộc tính dự án của mình trước đây vì vậy tôi không biết điều này xảy ra như thế nào (tôi không thay đổi điều này hoặc có cơ hội), nhưng trong Project> Properties> Web, url SSL của tôi được liệt kê là URL thông thường của tôi nhưng là http thay vì https (trước đây là https vì nó hoạt động trước đó). Tôi đã trải qua tất cả các bước được liệt kê trên trang này, gỡ cài đặt VS, rồi IIS và cuối cùng nhận thấy lỗi đáng lẽ là https: // mySSLURL (nhưng thiếu s trong https). Khi tôi thay đổi http thành https, mọi thứ sẽ hoạt động trở lại.



0

Tôi vừa gặp vấn đề này sau khi cập nhật VS 2017 của mình lên (các) phiên bản mới nhất và tạo một dự án MVC / WebAPI (.Net) mới (từ mẫu). Tôi đã có thể khắc phục điều này bằng cách điều chỉnh số cổng của mình trong phạm vi chính xác

Chorme Phạm vi cổng mặc định cho DEV SSL

Mà tôi có thể tìm thấy ở đây: https://www.pluralsight.com/guides/visual-studio-2017-resolve-ssl-tls-connections-probols-with-iis-express

Hi vọng điêu nay co ich!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.