きな粉もち.net

.NET関連仕事に携わっています。OSSのソースを読んで気がついたことを中心に呟いたりブログに投稿したりしています。最近はUiPathを使ったRPAも研究中。気軽にフォローやツッコミよろしくおねがいします! Gitはここを使っています https://github.com/kinakomotitti

ASP.NET core × HTTPS用の構成 × 手動でHTTPからHTTPSに変更してみた


この記事の目的

この記事では、
ASP.NETのプロジェクト作成時に選択できる「HTTPS用の構成にする」チェックボックスの設定を手動で変更すること
を目的としています。
開発が終わった後にHTTPSに変更したいということになったときに使えるかもしれないので、調べてみました。

本題

★HTTP用の構成とは・・・?

f:id:kinakomotitti:20181024232444p:plain
左下のチェックボックスです。
これをチェックすると、HTTPS用の構成でプロジェクトを作成してくれます。
便利ですが、何をどこに設定しているのかわからないと不安です。
ASP.NETの勉強がてらひも解いてみました。

★HTTP to HTTPS(Dockerでデバッグする場合)

HTTPS用の構成のチェックボックスを外して、プロジェクトを作成します。
f:id:kinakomotitti:20181024232453p:plain
↓Dockerでデバッグ実行したところ。HTTPで実行されていることがわかります。
f:id:kinakomotitti:20181024232458p:plain

では、さっそくHTTPSで実行できるようにソリューションを変更していきます。
Step1)launchSettings.jsonへの変更
f:id:kinakomotitti:20181024232504p:plain
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の値と同じ値を設定する。
<||
	
	<b>Step3)startup.csへの変更</b>
>|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に値を設定します。
f:id:kinakomotitti:20181024232516p:plain
ここで設定する値は、プロジェクトを右クリックして出てくるコンテキストメニューの「ユーザーシークレットの管理」を実行すると、自動的に入力されます。

f:id:kinakomotitti:20181024232536p:plain


Step5)実行
実行すると、以下のダイアログが表示されます。
f:id:kinakomotitti:20181024232548p:plain
「このプロジェクトは、SSLを利用するように構成されています。
デバッグする場合、ASP.NETCoreによって生成されたオレオレ証明書を信頼する必要があります。

もし、オレオレ証明書を信頼するかもう一度問われた場合、【ツール→オプション→コンテナツール】を選択し、localhost SSL証明書を信頼するためのメッセージを表示しないをチェックしてください。

ASP.NET CoreのSSL証明書を信頼しますか?」
と、言われているようです。当然「はい」を選択します。

すると、さらに警告ダイアログが表示されます。
f:id:kinakomotitti:20181024232602p:plain

これも「はい」を押下します。

すると、無事Dockerコンテナでアプリが起動し、HTTPSでアクセスできていることが確認できます。
f:id:kinakomotitti:20181024232607p:plain
ポートが443ではなく、30090となっているのは、Dockerのコンテナの443番ポートにローカルホストからアクセスするために、ローカルホストのポート30090番を紐づけているためです。

無事、HTTPの構成で作成したプロジェクトをHTTPSの構成に変更することができました。
ある程度開発が進んでから構成を変えることになったときに思い出そうと思いますw



参考)この設定のことを言っているようです。
f:id:kinakomotitti:20181024232615p:plain

まとめ

次は、IIS Expressでデバッグする場合についてまとめていこうと思います。