お知らせ

[Visual Studio 2017 RC]ASP.NET CoreでSSLを有効化するとエラーになった時

最近の流れとしてSSL(TLS)で保護されていないとWebにあらず的なやーつがあるので、ASP.NET CoreのアプリケーションもSSL化してみっかと思い対応してみました。

SSL有効化

SSL有効化

開発環境でも ASP.NET Core MVC の RequireHttps 属性を使えるようにする
http://blog.shibayan.jp/entry/20160718/1468774406
しばやん様の情報を元にポチッと対応してみて、起動してみると-

SSL有効化後エラーダイアログ

SSL有効化後エラーダイアログ

「アプリケーションがホストしている dotnet.exe のプロセスIDを特定しようとしてエラーが発生しました。1つ以上のエラーが発生しました。」と出て先に進まなくなりました…
Mainメソッドにブレイクポイントを貼っても飛んでこない…

ぐぐってみると、同じ症状で悩んでる方が!
Default MVC ASP.NET Core RTM cannot use IIS Express and SSL
https://github.com/aspnet/Mvc/issues/4950

どうやら証明書を入れたら解決したらしい…
英語の情報しかなかったので、残しておきます。

MMCを実行

MMCを実行

まずは、MMCを実行します。

MMC画面1

MMC画面1

起動したら何もないので-
ファイル(F)→スナップインの追加と削除(M)… Ctrl+Mを選択します。

スナップインの追加と削除1

スナップインの追加と削除1

利用できるスナップイン(S):から証明書を選択して追加(A) >ボタンを押下します。(証明書をダブルクリックでもOKです。)

証明書スナップイン

証明書スナップイン

コンピューター アカウント(C)を選択して次へ(N) >ボタンを押下します。

コンピューターの選択

コンピューターの選択

ローカルコンピュータ(L): (コンソールを実行しているコンピューター)がデフォルトで選択されているので、そのまま完了ボタンを押下します。

スナップインの追加と削除2

スナップインの追加と削除2

選択されたスナップイン(E):に証明書(ローカルコンピューター)が追加されるので、OKボタンを押下します。

MMC画面2

MMC画面2

証明書(ローカルコンピューター)→個人→証明書を選択すると、フレンドリ名:IIS Express Development Certificate、発行元:localhost、発行者:localhostの証明書があるはずです。
ない場合は、↓を参考に追加してください。
How do I fix a missing IIS Express SSL Certificate?
http://stackoverflow.com/questions/20036984/how-do-i-fix-a-missing-iis-express-ssl-certificate

MMC画面3

MMC画面3

このIIS Express Development Certificateを信頼されたルート証明機関へインポートします。
そのために、IIS Express Development Certificateを一度エクスポートします。
IIS Express Development Certificateを選択して右クリック→すべてのタスク(K)→エクスポート(E)…を選択します。

証明書のエクスポートウィザード1

証明書のエクスポートウィザード1

ウィザードが起動するので、次へ(N)ボタンを押下します。

証明書のエクスポートウィザード2

証明書のエクスポートウィザード2

いいえ、秘密キーをエクスポートしません(O)がデフォルトで選択されているので、そのまま次へ(N)ボタンを押下します。

証明書のエクスポートウィザード3

証明書のエクスポートウィザード3

DER encoded binary X.509 (.CER)(D)がデフォルトで選択されているので、そのまま次へ(N)ボタンを押下します。

証明書のエクスポートウィザード4

証明書のエクスポートウィザード4

エクスポート先を選択or入力して次へ(N)ボタンを押下します。(フォルダーやファイル名はなんでも大丈夫です。)

証明書のエクスポートウィザード5

証明書のエクスポートウィザード5

完了(F)ボタンを押下します。

証明書のエクスポートウィザード6

証明書のエクスポートウィザード6

OKボタンを押下します。

MMC画面4

MMC画面4

証明書(ローカルコンピューター)→信頼されたルート証明機関→証明書を右クリック→すべてのタスク(K)→インポート(I)…を選択します。

証明書のインポートウィザード1

証明書のインポートウィザード1

ウィザードが起動するので、次へ(N)ボタンを押下します。

証明書のインポートウィザード2

証明書のインポートウィザード2

先程エクスポートしたファイルを選択して、次へ(N)ボタンを押下します。

証明書のインポートウィザード3

証明書のインポートウィザード3

証明書をすべて次のストアに配置する(P)がデフォルトで選択されているので、そのまま次へ(N)ボタンを押下します。

証明書のインポートウィザード4

証明書のインポートウィザード4

完了(F)ボタンを押下します。

証明書のインポートウィザード5

証明書のインポートウィザード5

OKボタンを押下します。

MMC画面5

MMC画面5

IIS Express Development Certificateが追加されているのを確認します。

再起動して、Visual Studio 2017 RCからASP.NET Coreのアプリケーションが起動できることを確認します。
最初はなんじゃこれ!って感じでしたが、ぐーぐる先生すごいですね。