asp.net-mvc - IIS Express——让 SSL 工作

标签 asp.net-mvc visual-studio ssl iis-express

我无法让 IIS Express 接受我正在开发的 VS2010 MVC3 项目的安全连接。我可以让它在端口 80 上接受不安全的连接,但在端口 443 上不安全。

根据谷歌搜索,我采取了以下步骤:

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

3) 通过在 VS2010 工具菜单中运行创建 GUID 来生成一个新的 GUID。就我而言,我得到了 B0421A5B-FF61-47CE-892D-11AA3A9C7D2A。

4) 通过在提升的命令行提示符下执行以下操作,将自签名证书安装到端口 443:

netsh http add sslcert ipport=0.0.0.0:443 certhash=9B088F80A4FC314128F6289070BA1FC449FDD009 appid={B0421A5B-FF61-47CE-892D-11AA3A9C7D2A}

5) 通过从提升的命令行提示符运行以下命令修改了 ACL:

netsh http add urlacl url=https://localhost:443/ user=everyone

6) 通过为端口 443 和 https 协议(protocol)添加绑定(bind)修改了 IIS Express 的 application.config 文件。该文件的网站部分最终看起来像这样:

        <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>

7) 通过在提升的命令行提示符处执行以下命令重新启动 http 服务:

net stop http
net start http

8) 将我的 MVC 项目属性页的 Web 选项卡上的项目 URL 更改为以下内容:

http://localhost/

在我进行此更改后,保存项目属性页会触发服务器的重新配置。

当我从 VS2010 中启动 MVC 应用程序时,它正确地返回到 http://localhost (在默认端口 80 上;我没有包括让 IIS Express 与端口 80 上的不安全/正常连接一起工作的所有步骤,但它们本质上是步骤 5 到 7,但重点是 http 和端口 80,而不是https 和端口 443)。

但是,尝试转换到任何需要 https 的操作都会让我收到“服务器拒绝连接”错误。

我做错了什么?

最佳答案

将项目设置为使用 IISExpress 后,在解决方案资源管理器中选择项目时按 F4 以显示属性并在属性中设置 SSL Enable 设置 true 并在 SSL URL 下设置 URL 和您想要的 SSL 端口(在您的例子中是 443)。

这对我有用,无需深入了解,并且自签名证书是自动的。

要默认在该 URL 上运行项目,您可以右键单击该项目,选择属性,然后选择 Web 并将项目 Url 替换为 https://localhost:443

关于asp.net-mvc - IIS Express——让 SSL 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5521305/

相关文章:

visual-studio - Visual Studio 卡在奇怪的模式下导致键盘问题

C# - 如何使我的程序集强命名?

web-services - Sharepoint 代理查询

php - Magento - 安全连接失败

asp.net-mvc - 在 Office Web Apps 中从 ASP.NET 打开 Excel/Word 文档进行编辑?

c++ - 在Qt中构建DLL并在Visual Studio+Del​​phi中使用

c# - 没有符号的货币格式

java - HttpClient ssl 和 login.facebook.com

asp.net-mvc - 什么会在 Chrome 和 IE 中将我的 View 和 Controller 相互解除 Hook ,但在 Firefox 中却不会?

asp.net-mvc - 使用signalr时,IIS会有连接限制吗