Asp.net-Mvc

IIS Express——讓 SSL 發揮作用

  • April 2, 2011

我無法讓 IIS Express 接受我正在開發的 VS2010 MVC3 項目的安全連接。我可以讓它接受埠 80 上的不安全連接,但埠 443 上不安全。

根據Google搜尋,我採取了以下步驟:

  1. 通過在 VS2010 命令行上執行以下命令找到我的 IIS Express 伺服器自簽名證書的 SHA1 指紋:
certmgr.exe /c /s /r localMachine MY

結果是 9B088F80 A4FC3141 28F62890 70BA1FC4 49FDD009。後來我才知道,使用指紋時需要刪除空格。

2)通過在提升的命令行提示符下執行以下命令刪除了連結到埠 443 的任何證書:

netsh http delete sslcert ipport=0.0.0.0:443
  1. 通過在 VS2010 工具菜單中執行 Create GUID 生成一個新的 GUID。就我而言,我得到了 B0421A5B-FF61-47CE-892D-11AA3A9C7D2A。

  2. 通過在提升的命令行提示符下執行以下命令,將自簽名證書安裝到埠 443:

netsh http add sslcert ipport=0.0.0.0:443 certhash=9B088F80A4FC314128F6289070BA1FC449FDD009 appid={B0421A5B-FF61-47CE-892D-11AA3A9C7D2A}
  1. 通過從提升的命令行提示符執行以下命令來修改 ACL:
netsh http add urlacl url=https://localhost:443/ user=everyone
  1. 修改 IIS Express 的 application.config 文件,增加埠 443 和 https 協議的綁定。該文件的站點部分最終如下所示:
       <sites>
       <site name="Development Web Site" id="1" serverAutoStart="true">
           <application path="/">
               <virtualDirectory path="/" physicalPath="%IIS_BIN%\AppServer\empty_wwwroot" />
           </application>
           <bindings>
               <binding protocol="https" bindingInformation="*:443:localhost" />
               <binding protocol="http" bindingInformation="*:80:localhost" />
           </bindings>
       </site>
       <siteDefaults>
           <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
           <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
       </siteDefaults>
       <applicationDefaults applicationPool="IISExpressAppPool" />
       <virtualDirectoryDefaults allowSubDirConfig="true" />
   </sites>
  1. 通過在提升的命令行提示符處執行以下命令重新啟動 http 服務:
net stop http
net start http
  1. 將我的 MVC 項目的屬性頁面的 Web 選項卡上的項目 URL 更改為以下內容:
http://localhost/

在我進行此更改後,保存項目屬性頁觸發了伺服器的重新配置。

當我從 VS2010 中啟動 MVC 應用程序時,它正確地綁定到<http://localhost>(在埠 80 上,預設值;我沒有包括讓 IIS Express 在埠 80 上處理不安全/正常連接的所有步驟,但它們本質上是第 5 步到第 7 步,但側重於 http 和埠 80,而不是 https 和埠 443)。

但是,嘗試轉換到任何需要 https 的操作都會導致“伺服器拒絕連接”錯誤。

我究竟做錯了什麼?

將項目設置為使用 IISExpress 後,F4在解決方案資源管理器上選擇項目時按下以顯示屬性,並在屬性集SSL Enable設置trueSSL URL設置 URL 以及您想要的埠(在您的情況下為 443) SSL。

這對我有用,無需深入了解,並且自簽名證書是自動的。

要預設在該 URL 上執行項目,您可以右鍵點擊該項目,選擇屬性,然後選擇 Web 並將項目 URL 替換為<https://localhost:443>

引用自:https://stackoverflow.com/questions/5521305