如何在子文件夹中的ASP-NET核心应用程序中使用SSL

时间:2019-02-24 05:27:34

标签: angular ssl iis asp.net-core

我有几个申请。一种是angular-cli客户应用程序。另一个是AspNetCore WebApi应用程序,它将数据提供给我的角度客户端。我已经将这两个都设置为子应用程序(即使用现有网站的添加应用程序功能托管在IIS子文件夹中。

Angular应用程序的配置是使用几个标志构建的,这些标志将允许该应用程序从子文件夹运行。

ng build --deploy-url=/mock-v1/ --base-href=/mock-v1/

使用这些标志构建后,该应用程序在客户端子应用程序下可以正常工作。

http://app/mock-v1/

接下来,我将启动文件配置为具有以下更改的AspNetCore应用程序。

// ConfigureServices
services.AddCors(c => c.AddPolicy("CorsPolicy",
    builder => builder.AllowAnyOrigin()
    .AllowAnyMethod()
    .AllowAnyHeader()));

// Configure
app.UseStaticFiles("/data");
app.UsePathBase("/data");

在IIS中构建并部署它之后,我可以成功访问我的测试页,如下所示,示例输出显示“ [“ value1”,“ value2”]“:

http://app/data/api/values

接下来,我按照hosts文件中的设置为本地域设置一个自托管的ssl证书:

PS C:\> New-SelfSignedCertificate -DnsName app, data -CertStoreLocation 
   "cert:\LocalMachine\My"

结果在本地是

http://app/mock-v1/            // works 
http://app/data/api/values     // works
https://app/mock-v1/           // doesn't work
https://app/data/api/values    // doesn't work

在我已成功为根域设置SSL的服务器上:

http://[domain].com/mock-v1/            // works 
http://[domain].com/data/api/values     // doesn't work
https://[domain].com/mock-v1/           // works
https://[domain].com/data/api/values    // doesn't work

实际上,我不知道data / api / values的非SSL版本是否有效,因为它一直重定向到https并且页面上没有任何显示。

如果我将应用程序设置为以下主机文件的根网站,则所有网站均可工作。

app    127.0.0.1 
data   127.0.0.1

http://app/                // works 
http://data/api/values     // works
https://app/               // works 
https://data/api/values    // works 

我的最终目标是让HTTPS在我的子应用程序上运行。我对部署有多个根域不感兴趣。

1 个答案:

答案 0 :(得分:0)

如果您使用的是2.1或2.2,则可以在此处找到如何进行设置。 https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.2&tabs=visual-studio