我经常在使用SSL时遇到这个确切的问题,并发现(特别是在团队环境中处理别人的项目时)Visual Studio项目Web设置(SSL端口)有时会出现问题。以下是我解决它们的方法:
这总是解决我的问题。
假设你有一个.NET MVC或Web API项目,并且想要在SSL上运行它。换句话说,你希望在类似于https://localhost:xxxx的URL上启动该项目。
第一步很简单。只需在解决方案中选择MVC/Web API项目名称,并在属性窗口中找到名为“SSL Enabled”的属性:
同样的属性窗口还将显示应用程序的 HTTPS URL。在上面的例子中,它是 https://localhost:44300/。复制该URL并转到项目属性窗口。找到Web选项卡,并覆盖项目URL属性为https地址:
启动应用程序。您可能会在浏览器中收到一条消息,提示本地主机地址不受信任,您可以自行承担风险继续访问网站。以下是一个瑞典语的 Chrome 示例:
问题在于Visual Studio自动为您安装的证书不受信任。您可以在证书管理器中的计算机级别证书的个人文件夹中找到该证书:如果你双击证书,你会发现它不被信任:
该消息还提供了解决方案:证书必须导入到受信任的根证书颁发机构文件夹中。您会在同一快捷菜单下“个人”文件夹的下方看到它作为一个文件夹。那么我们该怎么做呢?应该会出现一个消息,说明导入成功。
如果现在回到个人存储并双击本地主机证书,那么您应该会看到它已被信任:
好的,让我们重新开始.NET Web项目,打开页面时不应出现任何警告。如果您仍然看到相同的问题,请在全新的浏览器会话中进行测试,例如在IE中:
您还可以从浏览器窗口查看提取的证书。这是IE的一个示例:@MattW 我使用的是Mac,在macOS Catalina上使用Visual Studio 2019 for Mac,并遇到了这个问题。我打开了我的项目的“Project Options”,在ASP.NET Core的默认运行配置下的“App URL”中将“HTTP”更改为“HTTPS”。
我已经拥有了用于本地主机的自签名证书,所以Visual Studio给我显示了一个消息框,要求我从Keychain使用该开发证书。它要求我的密码并使用了该证书。应用程序在“HTTPS”下无任何问题。
如果您没有开发证书,可以使用以下命令在Mac中生成一个:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
如果你有一个带有全球图标的Web站点项目,启用SSL与带有矩形中的全球图标的Web应用程序项目略有不同,其他答案适用于此。
Web站点项目没有Web选项卡。相反,从项目属性(F4)中复制SSL URL到项目属性页面(Shift F4)中的启动URL。这一步是可选的,但如果不这样做,你将不得不在浏览器中手动输入SSL端口号。
此外,对于任何类型的Web项目,在属性中输入的端口号并不真正重要。最简单的方法是接受VisualStudio默认填充的数字,但是另一个空闲端口号同样有效。
当然,你将使用自签名证书,即由VS签名。因此,浏览器可能会对此发出警告,并且为了使用SSL调试你的项目,你必须在浏览器中接受异常。
当我的IIS本地开发证书过期时,就会出现这个问题。我从这里找到了解决方案。
删除已安装的开发证书(运行MMC.exe
,使用名称“localhost”进行“查找证书”,然后删除过期的证书)。
清除SSL状态(控制面板 -> Internet选项 -> 内容 -> 清除SSL状态)。
安装新的开发证书(在命令窗口中运行dotnet dev-certs https --trust
)。
%USERPROFILE%\Documents\IISExpress\config\applicationHost.config
。可以手动编辑配置。此外,文章中描述了"%ProgramFiles%\IIS Express\IisExpressAdminCmd.exe"
(请参见“附录 Z”),该实用程序简化了 SSL 配置的某些步骤。 - Oleg