Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc IIS Express--让SSL正常工作_Asp.net Mvc_Visual Studio_Ssl_Iis Express - Fatal编程技术网

Asp.net mvc IIS Express--让SSL正常工作

Asp.net mvc IIS Express--让SSL正常工作,asp.net-mvc,visual-studio,ssl,iis-express,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。后来我了解到,使用指纹时需要删除空格

我无法让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
netsh http add sslcert ipport=0.0.0.0:443 certhash=9B088F80A4FC314128F6289070BA1FC449FDD009 appid={B0421A5B-FF61-47CE-892D-11AA3A9C7D2A}
netsh http add urlacl url=https://localhost:443/ user=everyone
net stop http
net start http
3) 通过在VS2010“工具”菜单下运行“创建GUID”生成新GUID。就我而言,我得到了 B0421A5B-FF61-47CE-892D-11AA3A9C7D2A

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

netsh http delete sslcert ipport=0.0.0.0:443
netsh http add sslcert ipport=0.0.0.0:443 certhash=9B088F80A4FC314128F6289070BA1FC449FDD009 appid={B0421A5B-FF61-47CE-892D-11AA3A9C7D2A}
netsh http add urlacl url=https://localhost:443/ user=everyone
net stop http
net start http
5) 通过从提升的命令行提示符运行以下命令来修改ACL:

netsh http delete sslcert ipport=0.0.0.0:443
netsh http add sslcert ipport=0.0.0.0:443 certhash=9B088F80A4FC314128F6289070BA1FC449FDD009 appid={B0421A5B-FF61-47CE-892D-11AA3A9C7D2A}
netsh http add urlacl url=https://localhost:443/ user=everyone
net stop http
net start http
6) 通过添加端口443和https协议的绑定,修改了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>
8) 将我的MVC项目属性页的Web选项卡上的项目URL更改为以下内容:

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

当我从VS2010内启动MVC应用程序时,它会正确地连接到(在端口80上,默认设置;我没有包括让IIS Express在端口80上使用不安全/正常连接的所有步骤,但它们基本上是步骤5到7,但重点是http和端口80,而不是https和端口443)

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


我做错了什么?

我无意中找到了答案

在步骤6中,我修改了错误的IIS Express application.config文件。事实证明,在应用程序的主目录中有一个“主”配置文件(例如,在我的系统上,
C:\ProgramFiles(x86)\IIS Express\AppServer
),这是我修改的文件


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

将项目设置为使用IISExpress后,在解决方案资源管理器上选择该项目时,按
F4
,以调出属性,并在属性集
SSL Enable
中设置
true
下,在
SSL URL
下为SSL设置所需端口的URL(在您的情况下为443)

这对我来说是可行的,不需要隐藏,自签名证书是自动的


默认情况下,要在该URL上运行项目,您可以右键单击该项目,选择“属性”,然后选择“Web”,并将项目URL替换为“

”。如果您遵循了jbtule的步骤,并且SSL仍然不起作用,请确保您的端口的格式为“
:443XX


VisualStudio在我启用SSL的第一个项目中自动执行此操作,但任何后续项目似乎都有随机的SSL端口。在
Project>Web
UI下将其更改为上述443结构,使其为我工作。

我只想添加帮助我解决相同问题的解决方案

VS显示的SSL URL是
https://[一个IP,而不是本地主机]:44367

url是保留的,我用
netsh http show urlacl


然后我运行了
netsh http delete urlacl https://[一个IP,而不是本地主机]:44367
,重新启动了VS,通过将SSL设置为false关闭了SSL,然后再次打开。这更正了SSL URL。

我最近在VS2019和IIS Epress中遇到了一个非常类似的问题。我尝试将http更改为https,以便使用ADFS。(消息:此站点无法访问,localhost不允许连接)


经过进一步研究,我尝试将'requiressl'属性从true切换到false,再切换回true。这触发了对applicationhost.config文件(..Vs\ProjectName\config\applicationhost.config)的更新,该文件使用https协议的新端口号创建了新的SSL绑定。因此,我用建议的新端口修改了所有链接(在项目的web属性中,配置文件和ADFS配置),它可以正常工作。结论:对于同一站点,http端口不必与https端口相同。

Wow!这肯定比我在搜索中发现的要容易得多。我必须试一试。为了清楚起见,这个简单的答案是否就是在IIS Express上启用SSL所需要做的全部工作?i、 e.Mark的命令行工作不是必需的。是的,简单回答所有需要的内容。在VS 2012中,您可以使用“SSL URL”属性下分配的URL,在我的例子中是@twomm,我认为您不能更改端口号,因为IIS Express开发TLS证书绑定到
https://localhost:44300/
。我以admin
netsh-http-show-sslcert-ipport=0.0.0.0:44300运行,我的机器就是这样。这种荒谬的神奇格式:“443XX”就是我需要的答案。谢谢。是的,这很有效。谢谢,但是这个号码记录在哪里?天哪,你在想什么!?这对我也有用。