2017-06-30 13 views
1

asp.netコアアプリケーションを作成しましたが、逆プロキシを使用してApacheでホストしようとしています。私はケストレルからコンテンツを提供するカスタムポートと1 SSLホストだけを使用したいhttpd.confでSSLとクッキー認証リダイレクトを使用したApacheでのASP.NETコアホスティング

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

:アプリは、クッキー認証を使用しています。私は、URL https://testserver1:34567を使用する場合

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> 

は、それは当然のことながら不正な要求を与えるhttp://testserver1:34567/Account/Login/?ReturnUrl=%2Fにリダイレクトします。 URLをhttpsに変更してURLを訂正すれば、その後すべて正常に動作します。

常にhttps URLにリダイレクトされるようにするにはどうすればよいですか?

答えて

0

私が解決した方法は、すべてのHTTP要求(ルートが含まれています)をhttps要求にリダイレクトすることでした。

ここに私のApache設定ファイルがあります。それは要求をリダイレクト1があるよう

<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> 

キーがVirtualHost *:80部分があります。もう1つはそれらを消費することです。

関連する問題