我无法让正在开发的VS2010 MVC3项目使用IIS Express接受安全连接。我可以让它在端口80上接受非安全连接,但无法在端口443上接受安全连接。
根据谷歌搜索,我采取了以下步骤:
1)通过在VS2010命令行上执行以下操作来查找我自己签名证书的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协议添加绑定,修改了IIS Express的application.config文件。修改后的文件中的sites部分如下所示:
<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的操作都会得到“服务器拒绝连接”的错误。
我做错了什么?
https://localhost:44300/
。我已以管理员身份运行netsh http show sslcert ipport =0.0.0.0:44300
,在我的机器上也是如此。 - Ceco