.net 코어 1.1 애플리케이션을로드 밸런서 뒤에두고 https를 시행하기 위해 노력하고 있습니다. 내 Startup.cs.net Core X Forwarded Proto not working
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IOptions<Auth0Settings> auth0Settings)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
var startupLogger = loggerFactory.CreateLogger<Startup>();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseBrowserLink();
startupLogger.LogInformation("In Development");
}
else
{
startupLogger.LogInformation("NOT in development");
app.UseExceptionHandler("/Home/Error");
}
app.UseMiddleware<HttpsRedirectMiddleware>();
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});`
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme= CookieAuthenticationDefaults.AuthenticationScheme,
AutomaticAuthenticate = true,
AutomaticChallenge = true,
CookieHttpOnly = true,
SlidingExpiration = true
});
HttpsRedirectMiddleware에 다음과 같은 설정을 가지고있는 LB의 유효성을 확인하는 것입니다 그것이 수행의 X-전달 - 프로토 세트를 가지고 있으며, 유일한 값으로 다시 HTTPS로 제공됩니다. 사이트 (https://myapp.somedomain.net)로 이동하면 인증되지 않았으므로 나를 (http://myapp.somedomain.net/Account/Logon?ReturnUrl=%2f)로 리디렉션합니다. SSL 연결이 끊어지고 나와 포트 80으로 다시 전환되었습니다. .net 핵심 문서는 아래처럼 "UseForwardedHeaders"를 사용한다고 나와 있는데, 제 경우에는 작동하지 않습니다. 이 스위치가 발생할 때 콘솔 로거에는 미들웨어에서 오류나 경고가 없습니다. 단기 수정에 대한
, 나는 "UseForwardedHeaders"app.Use(async (context, next) =>
{
var xproto = context.Request.Headers["X-Forwarded-Proto"].ToString();
if (xproto!=null && xproto.StartsWith("https", StringComparison.OrdinalIgnoreCase)){
startupLogger.LogInformation("Switched to https");
context.Request.Scheme = "https";
}
await next();
});
위는 완벽하게 작동하지만, 해킹 이하이를 뒀다. 올바른 방법으로하고 싶습니다.
, 그러나 이것은 속임수를 썼는지 AppHarbor에 SSL을 실행하는 샘플 애플리케이션을 얻으려고 하루 동안 책상에 내 머리를 두드리는 후. 로드 밸런서 뒤에있는 네트워크를 확인하고 응용 프로그램이 시작될 때이를 알려진 네트워크로 사용하는 방법이 있다고 상상해보십시오.하지만 적어도 작동 가능성은 알고 있습니다. 감사! –
네트워크를 정리하면 응용 프로그램에 포트 80을 통해 연결하고 xforwarded 헤더를 사용하여 암호화되지 않았으며 MiTM (중간 공격) 공격을 수행하는 데 사용할 수 있다는 것을 알 수 있습니다. 방화벽이 https (433) 트래픽 만 허용하도록 설정되어 있다면 잘해야하지만 보안에 신경을 쓰는 사람들은 항상 별도의 보호 계층을 선호합니다. 소프트웨어는 기본 구성 설정 공격을 막기 위해 즉시 보안을 유지해야하므로, .net 코어의 127.0.0.1 기본값이 필요합니다. – Josh