この記事の目的
この記事では、
ASP.NETのプロジェクト作成時に選択できる「HTTPS用の構成にする」チェックボックスの設定を手動で変更すること
を目的としています。
開発が終わった後にHTTPSに変更したいということになったときに使えるかもしれないので、調べてみました。
本題
★HTTP用の構成とは・・・?
左下のチェックボックスです。
これをチェックすると、HTTPS用の構成でプロジェクトを作成してくれます。
便利ですが、何をどこに設定しているのかわからないと不安です。
ASP.NETの勉強がてらひも解いてみました。
★HTTP to HTTPS(Dockerでデバッグする場合)
HTTPS用の構成のチェックボックスを外して、プロジェクトを作成します。
↓Dockerでデバッグ実行したところ。HTTPで実行されていることがわかります。
では、さっそくHTTPSで実行できるようにソリューションを変更していきます。
Step1)launchSettings.jsonへの変更
SSLのポートに任意の値を設定します。
"iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:50015", "sslPort": 0 ←変更前 "sslPort": 39000 ←SSLポートを設定(任意の値) }
Step2)Dockerfileへの変更
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base WORKDIR /app EXPOSE 80 ←変更前 EXPOSE 39000 ←変更後。sslPortの値と同じ値を設定する。
Step3)startup.csへの変更
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); } //HTTPSにリダイレクトする設定を追加 app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseMvc(); }
Step4)プロジェクトのプロパティへの変更
UserSecretsIdに値を設定します。
ここで設定する値は、プロジェクトを右クリックして出てくるコンテキストメニューの「ユーザーシークレットの管理」を実行すると、自動的に入力されます。
Step5)実行
実行すると、以下のダイアログが表示されます。
「このプロジェクトは、SSLを利用するように構成されています。
デバッグする場合、ASP.NETCoreによって生成されたオレオレ証明書を信頼する必要があります。
もし、オレオレ証明書を信頼するかもう一度問われた場合、【ツール→オプション→コンテナツール】を選択し、localhost SSL証明書を信頼するためのメッセージを表示しないをチェックしてください。
ASP.NET CoreのSSL証明書を信頼しますか?」
と、言われているようです。当然「はい」を選択します。
すると、さらに警告ダイアログが表示されます。
これも「はい」を押下します。
すると、無事Dockerコンテナでアプリが起動し、HTTPSでアクセスできていることが確認できます。
ポートが443ではなく、30090となっているのは、Dockerのコンテナの443番ポートにローカルホストからアクセスするために、ローカルホストのポート30090番を紐づけているためです。
無事、HTTPの構成で作成したプロジェクトをHTTPSの構成に変更することができました。
ある程度開発が進んでから構成を変えることになったときに思い出そうと思いますw
参考)この設定のことを言っているようです。