首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为Asp.net核心web api启用HTTPS安全连接

为Asp.net核心web api启用HTTPS安全连接
EN

Stack Overflow用户
提问于 2019-02-15 08:46:19
回答 1查看 17.2K关注 0票数 7

我使用ASP.NET Core2.1创建了REST应用程序。REST由WebHostBuilder创建,由Kestrel托管。

代码语言:javascript
运行
复制
Startup.Kernel = kernel;
    _restApiServer = new WebHostBuilder()
      .UseKestrel(options =>
      {

      })
      .UseContentRoot(Directory.GetCurrentDirectory())
      .UseIISIntegration()
      .UseStartup<Startup>()
      .UseUrls(string.Format("http://localhost:{0}", _configuration.PortNumber))
      .UseSetting("https_port",_configuration.HttpsPort.ToString())
      .Build();
     _restApiServer.Run();

默认情况下,REST服务在端口8998上。这个REST是由我不同的应用程序启动的。我能够连接到这个REST使用浏览器和邮递员。

现在,我想保护与REST的连接。我所做的是:我在配置方法中添加了必要配置,以强制我的启动类中的安全连接:

代码语言:javascript
运行
复制
app.UseHttpsRedirection();

我还执行了一个信任开发证书的代码:

代码语言:javascript
运行
复制
dotnet dev-certs https --trust

情况是,当我试图通过浏览器访问web api时,我得到并出错:

本地主机拒绝连接。尝试: 检查连接 检查代理和防火墙 ERR_CONNECTION_REFUSED

另外,当我使用POSTMAN调用一些REST方法时,我得到并出错了:

无法得到任何回应

我做错了什么?是否需要在Kestrel配置中直接指定证书?

EN

回答 1

Stack Overflow用户

发布于 2019-02-18 20:29:40

由于https是一个不同的协议,所以您需要为https配置另一个端口。为了自动重定向到https url,您需要做三件事:

  1. 添加一个侦听器。在program.cs中(端口号就是一个例子): .UseUrls("http://localhost:8998", "https://localhost:8999"); 启动应用程序时,您应该看到:

  1. 配置https重定向。在Startup.ConfigureServices中: services.AddHttpsRedirection(options => options.HttpsPort = 8999); 如果省略此步骤,则使用默认端口,可能是5001。要在Azure上托管,您可能需要将其设置为443。
  2. 在Startup.Configure中: app.UseHttpsRedirection();

http://localhost:8998的调用现在将重定向到https://localhost:8999

如果您遵循了上述步骤,但没有创建证书,那么https端口就不会列出,也将不可用!如果创建了证书,则应列出两个端口。

我假设在生产过程中,Api会运行在代理后面。在这种情况下,可以省略上述步骤。在代理后面运行意味着您可以将http重定向到https,这意味着您不需要https重定向

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54705485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档