在Visual Studio中启用SSL

eh57zj3b  于 2023-05-18  发布在  其他
关注(0)|答案(5)|浏览(348)

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

我还设置了以下内容:

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

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

在Firefox或IE中没有进入网站的选项。我花了一整天的时间试图弄清楚到底出了什么问题。我做错了什么?

ntjbwcob

ntjbwcob1#

在使用SSL时,我经常看到这个问题,并且发现(特别是在团队环境中处理其他人的项目时)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。保存。

这总是为我解决问题。

lstz6jyr

lstz6jyr2#

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

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

启动应用程序。您可能会在浏览器中收到一条消息,说localhost地址不受信任,您可以继续访问该网站,风险自负。下面是一个瑞典语的Chrome示例:

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

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

该消息还提供了解决方案:必须将证书导入到受信任的根证书颁发机构文件夹中。你会看到,作为一个文件夹,在同一管理单元就在下面的“个人”。那么我们怎么做呢?

导出

  • 右键单击证书
  • 选择所有任务
  • 从上下文菜单中导出...。
  • 在证书导出向导上单击“下一步”。
  • 保持“不导出私钥”选项不变,单击“下一步”。
  • 接受下一屏幕上的默认值,即“DER encoded binary X.509”应保持选中状态,然后单击“Next”。
  • 为导出的文件提供名称和位置。将其命名为“localhost”,并将其保存在您可以轻松找到的位置。
  • 单击“下一步”和“完成”。

应该有一条弹出消息,说明导出成功。

导入

  • 接下来,右键单击名为“受信任的根证书颁发机构”的文件夹,然后选择“所有任务”
  • 从上下文菜单导入...。
  • 在证书导入向导中保留“本地计算机”选项不变,单击“下一步”。
  • 浏览到您刚才保存的证书。
  • 单击Next并接受所有默认值,直到向导结束。

应该有一条消息,说明导入成功。
如果您现在返回到Personal存储区并双击localhost证书,那么您应该看到它是受信任的:

好了,让我们再次启动.NET Web项目,打开的页面应该会在没有任何警告的情况下打开。如果您仍然看到相同的问题,请使用全新的浏览器会话进行测试,例如。在IE中:

您还可以从浏览器窗口查看提取的证书。下面是一个来自IE的例子:

pvcm50d1

pvcm50d13#

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

我已经有了一个localhost的自签名证书,所以Visual Studio给了我一个消息框,要求我使用Keychain的开发证书。它要求我输入密码并使用证书。该应用程序在“HTTPS”上没有任何问题

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

dotnet dev-certs https --clean
dotnet dev-certs https --trust

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

b91juud3

b91juud34#

如果您有一个Web Site项目,在解决方案资源管理器中具有地球仪图标,则启用SSL的方式与Web App项目略有不同,后者具有矩形中的地球图标,其他答案适用于此。
网站项目没有Web选项卡。而是将SSL URL从项目属性(F4)复制到项目属性页中的Start URL(Shift F4)。此步骤是可选的,但如果不执行此步骤,则必须在浏览器中手动键入SSL端口号。
此外,对于任何类型的Web项目,在属性中输入哪个端口号并不重要。最简单的方法是接受VisualStudio默认填写的端口号,但另一个空闲端口号也可以。
当然,您将使用自签名证书,即签署VS。所以浏览器可能会抱怨这一点,为了用SSL调试你的项目,你必须在浏览器中接受一个异常。

bsxbgnwa

bsxbgnwa5#

当我的IIS本地主机开发证书过期时,我会出现此问题。我从here中提取了解决方案。

  • 删除已安装的开发证书。(运行MMC.exe,“查找名称为“localhost”的证书”,并删除过期的证书。
  • 清除SSL状态(控制面板-> Internet选项->内容->清除SSL状态)
  • 安装新的dev证书(在命令窗口dotnet dev-certs https --trust中)

相关问题