在Visual Studio中启用SSL

w00*_*977 5 .net c# ssl visual-studio

我在Visual Studio中启用了SSL,如下所示:

在此输入图像描述

我也设置如下:

在此输入图像描述

当我通过IE访问网站(通过Visual Studio调试)时,我看到:

在此输入图像描述

当我通过Firefox(通过Visual Studio调试)访问网站时,我看到:

在此输入图像描述

在Firefox或IE中无法进入网站.我整天都在努力去理解什么是错的.我究竟做错了什么?

小智 15

假设您有一个.NET MVC或Web API项目,并且您希望在SSL上运行它.换句话说,您希望在类似于https:// localhost:xxxx的URL上启动项目.第一步很简单.您只需在解决方案中选择MVC/Web API项目名称,然后在属性窗口中找到名为"SSL Enabled"的属性:

在Visual Studio属性窗口中启用SSL

相同的属性窗口还将显示应用程序的HTTPS URL.在上面的示例中,它是https:// localhost:44300 /.复制该URL并转到项目属性窗口.找到Web选项卡并使用https地址覆盖Project Url属性:

将项目URL覆盖为https

启动应用程序.您可能会在浏览器中收到一条消息,指出本地主机地址不受信任,您可以自担风险继续访问该网站.以下是瑞典语中的Chrome示例:

Localhost不受信任

问题是Visual Studio自动安装的证书不受信任.您可以在证书管理单元中的计算机级证书的"个人"文件夹中找到证书:

证书管理单元中的localhost证书

如果您双击证书,您将看到它不受信任:

localhost证书不包含在受信任的证书中

该消息还提供了解决方案:必须将证书导入受信任的根证书颁发机构文件夹.您将在"个人"下方的同一管理单元中看到该文件夹​​.那我们怎么做呢?右键单击证书,然后从上下文菜单中选择"所有任务","导出...".在证书导出向导上单击"下一步".保持"不导出私钥"选项不变,单击"下一步".接受下一个屏幕上的默认值,即"DER编码二进制X.509"应保持选中状态,然后单击"下一步".然后,您需要为导出的文件提供名称和位置.将其命名为"localhost"并将其保存在您可以轻松找到它的位置.单击"下一步"和"完成" 应该有一条弹出消息说导出成功.接下来,右键单击名为"受信任的根证书颁发机构"的文件夹,然后从上下文菜单中选择"所有任务,导入...".保持证书导入向导中的"本地计算机"选项不变,单击"下一步".浏览到之前保存的证书.单击"下一步"并接受沿途的所有默认值,直到到达向导结束.应该有一条消息说导入成功.如果您现在返回个人存储并双击localhost证书,那么您应该看到它是可信的:

localhost证书现在是可信的

好的,让我们再次启动.NET Web项目,打开页面应该打开而不会发出任何警告.如果你仍然看到相同的问题,那么测试一个全新的浏览器会话,例如在IE中:

localhost在浏览器中加载没有问题

您还可以从浏览器窗口中查看提取的证书.这是IE的一个例子:

来自Internet Explorer的证书详细信息

  • 您知道如何在 Visual Studio for Mac (Xamarin) 中执行此操作吗? (2认同)

小智 5

我在使用SSL时不时看到这个EXACT问题,并且发现(特别是在团队环境中处理他人项目时)Visual Studio项目Web设置(SSL端口)有时会混乱。这是我要修复它们的方法:

  • 在解决方案资源管理器中,单击您的项目。
  • 按下F4键(查看属性)。
  • 复制URL(而不是SSL URL)。
  • 将URL粘贴到“ Web”选项卡上的“项目URL”中,然后单击“保存”。
  • 在解决方案资源管理器中,单击您的项目。
  • 按下F4键(查看属性)。
  • 将SSL Enabled更改为false。
  • 将其更改回true。应该有一个新的SSL URL。复制它。
  • 将新的SSL URL粘贴到“ Web”选项卡上的“项目URL”中。单击创建虚拟目录。
  • 单击“替代应用程序根URL”,然后粘贴SSL URL。保存。

这总是为我解决问题。


小智 5

@MattW 我正在使用 Mac,并且遇到了这个问题。我在 macOS Catalina 上使用 Visual Studio 2019 for Mac。我打开了项目的“项目选项”,并将 ASP.NET Core 的默认运行配置下的“应用程序 URL”中的“HTTP”更改为“HTTPS”

屏幕截图:VS 2019 for mac 中的项目选项

我已经有本地主机的自签名证书,因此 Visual Studio 给了我一个消息框,要求我使用钥匙串中的开发证书。它询问我的密码并使用了证书。该应用程序在“HTTPS”上运行没有任何问题

屏幕截图:开发证书已找到消息

如果您没有开发证书,您可以在 Mac 中使用以下命令生成一个:

dotnet dev-certs https --clean
dotnet dev-certs https --trust
Run Code Online (Sandbox Code Playgroud)

了解更多信息https://learn.microsoft.com/en-us/aspnet/core/security/enforcing-ssl?view=aspnetcore-3.1&tabs=netcore-cli