ASP.NET WebアプリケーションでHTTPSを使用したいのですが、Login.aspxページのみに使用します。
どうすればこれを達成できますか?
最初に証明書を取得または作成します
SecureWebPageModuleモジュールを http://www.codeproject.com/Articles/7206/Switching-Between-HTTP-and-HTTPS-Automatically-Ver から取得します。セットアップの手順については、記事をご覧ください。
SecureWebPagesタグをweb.configに追加します
<configuration>
...
<secureWebPages enabled="true">
...
</secureWebPages>
...
<system.web>
...
</system.web>
</configuration>
Httpsプロトコルに使用するファイルとディレクトリを追加します。
<secureWebPages enabled="true">
<file path="Login.aspx" />
<file path="Admin/Calendar.aspx" ignore="True" />
<file path="Members/Users.aspx" />
<directory path="Admin" />
<directory path="Members/Secure" />
</secureWebPages>
お役に立てれば!
独自の証明書を公開することも、購入することもできます。注意点は、会社によって異なりますが、ほとんどのブラウザーの証明書ストアに既に保存されていることです。自己公開されたものはそうではなく、ユーザーは証明書をインストールする追加の手順を実行する必要があります。
使用しているIISのバージョンは言いませんが、 ここにIIS 6 の詳細な手順があります
比較的安価な証明書を購入するか、大きな男の子(verisign)にアクセスして、IEのアドレスバーを緑色にする拡張検証証明書を取得できます。また、多少厳密な検証プロセスであり、時間がかかります。
Webサイトにアクセスするすべてのユーザーを知っている場合、自分のWebサイトをインストールしても問題はありません。ただし、匿名ユーザー(知らない)を使用するオープンWebサイトの場合は、ほとんどの主要なブラウザーである証明書ストアに既に存在するWebサイトを購入することをお勧めします。
IISでSSLを有効にし、それをlogin.aspxページのみに要求し、残りは要求しません。
SSLのセットアップ/インストールが完了したら、ログインページでhttps://への何らかのリダイレクトを行います。検証後にユーザーが送信されるページは、http://になります。
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
If Request.IsSecureConnection = False And _
Not Request.Url.Host.Contains("localhost") Then
Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://"))
End If
End Sub
これは、マスターページまたはhttpsを必要とするすべてのページに簡単に実装できます。 「localhost」を確認することで、テスト環境でエラーが発生することを回避できます(テストサーバーに、「mytestservername」を確認する以外の名前がない場合)。
免責事項-私はこのプロジェクトの開発に関わっていました
http://nuget.org/packages/SecurePages/ を使用することをお勧めします。特定のページを保護したり、正規表現を使用して一致を定義したりできます。また、正規表現に一致しないページまたはHTTPに直接指定されていないすべてのページを強制します。
NuGet経由でインストールできます:Install-Package SecurePages
ドキュメントはこちら: https://github.com/webadvanced/Secure-Page-manager-for-asp.net#secure-pages
簡単な使用法:
SecurePagesConfiguration.Urls.AddUrl("/cart");
または
SecurePagesConfiguration.Urls.AddRegex(@"(.*)account", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline);
IIS configでHTTPSを有効にできますが、SSL証明書を取得してIISにプラグインしない限り、「安全」ではありません。ポート443が開いていることを確認してください。