2017-06-30 4 views
1

Ich habe eine asp.net Core-Anwendung gemacht und ich versuche, es in Apache mit Reverse-Proxy hosten. Die App nutzt Cookie-Authentifizierung:ASP.NET Core-Hosting in Apache mit SSL und Cookie-Authentifizierung redirect

app.UseCookieAuthentication(new CookieAuthenticationOptions() 
{ 
    AuthenticationScheme = "CookieAuthentication", 
    LoginPath = new PathString("/Account/Login/"), 
    AccessDeniedPath = new PathString("/Account/Forbidden/"), 
    AutomaticAuthenticate = true, 
    AutomaticChallenge = true 
}); 

In httpd.conf würde Ich mag ein SSL verwenden nur mit benutzerdefinierten Port Host die Inhalte von Kestrel dient.

Listen 34567 

<VirtualHost *:34567> 
    ProxyPreserveHost On 
    ProxyPass/http://127.0.0.1:5000/ 
    ProxyPassReverse/http://127.0.0.1:5000/ 
    SSLEngine on 
    SSLProtocol all -SSLv3 
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!RC4+RSA:+HIGH:+MEDIUM:!LOW:!RC4 
    SSLCertificateFile certs/server.crt 
    SSLCertificateKeyFile certs/server.key 
</VirtualHost> 

Wenn ich url verwenden https://testserver1:34567 es Umleitungen an http://testserver1:34567/Account/Login/?ReturnUrl=%2F die natürlich ein Bad Request gibt. Wenn ich die URL korrigiere, indem ich sie in https ändere, dann funktioniert alles gut.

Wie kann ich es so einrichten, dass es immer auf eine https-URL umleitet?

Antwort

0

Die Art und Weise, wie ich meine Lösung löste, bestand darin, alle HTTP-Anfragen, einschließlich der Routen, auf HTTPS-Anfragen umzuleiten.

Hier ist meine ganze Apache-Konfigurationsdatei.

<VirtualHost *:80> 
    RewriteEngine On 
    RewriteCond %{HTTPS} !=on 
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 
</VirtualHost> 

<VirtualHost *:443> 
    RequestHeader set X-Forwarded-Proto "https" 
    ServerName mydomain.com 

    ProxyPass/http://127.0.0.1:5000/ 
    ProxyPassReverse/http://127.0.0.1:5000/ 
    ErrorLog /var/log/httpd/netcore-error.log 
    CustomLog /var/log/httpd/netcore-access.log common 
    SSLEngine on 
    SSLProtocol all -SSLv2 
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!RC4+RSA:+HIGH:+MEDIUM:!LOW:!RC4 
    SSLCertificateFile /etc/letsencrypt/live/mydomain.com/cert.pem 
    SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem 
    SSLCertificateChainFile /etc/letsencrypt/live/mydomain.com/chain.pem 
</VirtualHost> 

Der Schlüssel befindet sich die VirtualHost *:80 Teil als es die eine der Anforderungen Umlenken ist. Der andere ist nur eine Frage des Verzehrs.