IIS Express - 使SSL工作

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (92)

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

基于googling,我已经采取了以下步骤:

1)通过在VS 2010命令行上执行以下命令,查找IIS Express Server自签名证书的SHA 1指纹:

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)通过在VS 2010工具菜单上运行CreateGUID生成一个新的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协议添加绑定来修改IISExpress的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选项卡上的ProjectURL更改为:

http://localhost/

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

当我从VS 2010内部启动mvc应用程序时,它正确地绑定到http://localhost(在端口80,默认情况下;我还没有包括让IIS Express在端口80上使用不安全/正常连接的所有步骤,但它们本质上是步骤5到7,但重点是HTTP和端口80,而不是https和端口443)。

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

我做错了什么?

提问于
用户回答回答于

将项目设置为使用IISExpress之后,请按F4在解决方案资源管理器上选择项目以显示属性和属性集。SSL Enabletrue和下SSL URL为SSL设置您想要的端口URL(在本例中为443)。

这对我来说是可行的,不需要在引擎盖下,而且自签名的证书是自动的。

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

用户回答回答于

我偶然发现了答案。

在步骤6中,我修改了错误的IISExpress应用程序配置文件。结果发现,应用程序的主目录中有一个“主”配置文件(例如,C:\Program Files (x86)\IIS Express\AppServer,在我的系统上),这是我修改的。

第二和修改正确的文件是用户数据区域中的一个(例如,C:\Users\Mark.ARCABAMA\Documents\IISExpress\config,在我的系统上)。

扫码关注云+社区

领取腾讯云代金券