#はじめに
WVD(Windows Virtual Desktop)やRemote Disktopサービスを展開する際にWindows10や、Windows Server 2019などのひな形を作成して、sysprepを利用して初期化したのちAzureのイメージにしてサーバーを展開することがあると思います。
このひな形にVisual Studio 2019などをインストールして展開した場合、展開したマシンでWeb系のアプリケーション(MVCモデルを利用したWebアプリケーション)などをデバック実行しようとすると、ブラウザは立ち上がりますが、Visual Studioでブレークポイントが実行されない。デバッグができないといった問題が発生することがあります。
本ドキュメントでは、この場合の対処方法に関して記述しています。
#原因
今回の対処は、Sysprep を実行した際に、マシン上のローカル証明書が消されてしまうために発生している問題に対処しています。Visual Studioをインストールするとローカルマシン上にIIS Expressが有効化されて、デバック用にローカル証明書が発行されています。この小名称があるため、Visual StudioでHTTPSのデバック実行がlocalhost:44300などで実行ができます。
しかしながら、Sysprepを実行するとこのlocalhostのルート証明書が消えてしまうことがあり、デバック実行がうまくできなくなってしまうことがあります。
#復旧方法
*本操作は、実施するマシンのローカルAdminの権限が必要です。
##1 ローカル証明書の削除
「ファイル名を指定して実行」 (Windows キー + R キー) から mmc.exe を起動します。
「ファイル」-「スナップインの追加と削除」 を選択します。
「利用できるスナップイン」から「証明書」を選択し、「追加 (A) >」 をクリックします。
「証明書スナップイン」画面で "コンピューター アカウント" を選択し、「コンピューターの選択」画面では「ローカル コンピューターを選択しスナップインを追加します。
同様の手順で 「ユーザー アカウント」のスナップインも追加します (コンピューターの選択画面は表示されません)
下記を展開し、それぞれ 「名前」 が "localhost" で、「発行者」 も "localhost"、 (ローカルコンピューターでは) フレンドリ名が "IIS Express Development Certificate" となっている証明書を探し、削除します
「証明書」-「現在のユーザー」-「信頼されたルート証明機関」ー「証明書」
「証明書 (ローカル コンピューター)」-「個人」-「証明書」
##2 証明書の復元
コントロールパネルを開きます。
「コントロールパネル」-「プログラム」-「プログラムと機能」を開きます。
IIS 10.0 Expressを探して、右クリックし「修復(E)」をクリックします。
これで、localhostの証明書が作成されます。
##3 証明書のインストール
前の手順で作成したlocalhostの証明書を「信頼されたルート証明期間」に登録します。
前記の手順に従い、mmcでローカルコンピュータの証明機関を開きます。
「証明書(ローカルコンピューター)」-「個人」-「証明書」を開いて、個人の証明書にlocalhost という証明書ができていることを確認します。
この作成した証明書を秘密鍵付きでエクスポートします。
localhost証明書を右クリックして、「すべてのタスク」-「エクスポート」を選択します。
秘密キーのエクスポートダイヤログが表示されます。証明書のエクスポートウィザードの開始画面が表示されたら、「次へ」をクリックします。
秘密キーのエクスポート画面で、秘密キーをエクスポートしますか?で、「はい、秘密キーをエクスポートします(Y)」を選択します。
選択後、「次へ」をクリックします。
エクスポートファイルの形式画面では、「次へ」をクリックします。セキュリティ画面では、「パスワード(P)」をチェックしてパスワードを入力します。
パスワードを入力したら、「次へ」をクリックします。
エクスポートするファイル画面で、ファイル名を入力し「次へ」をクリックします。
証明書のエクスポートウィザードの完了画面が表示されたら、「完了(F)」をクリックします。
これで、作成された証明書のエクスポートが完了しました。
##4 信頼されたルート証明機関にインポート
信頼されたルート証明機関にエクスポートした証明書をインポートします。
開いているmmcで「信頼されたルート証明機関」-「証明書」を選択して、右クリックして、メニューの「すべてのタスク」-「インポート」を選択します。
証明書のインポートウィザードの開始が表示されます。 この画面で「次へ」をクリックします。
インポートする証明書ファイル画面で、先ほどエクスポートしたファイルを選択します。「参照」をクリックしてファイルを参照した場合、先ほどエクスポートしたファイルは、「pfx」ファイルとしてエクスポートされているので、すべてのファイルを選択しないと表示されません。
ファイルを選択したら、「次へ」をクリックします。
秘密キーの保護画面が表示されたら、先ほどエクスポートした際に設定した、パスワードを入力します。「インポートオプション」で「このキーをエクスポート可能にする(M)のチェックをします。
証明書のストア画面が表示されたら、「次へ」をクリックします。
証明書のインポートウィザードの完了画面が表示されたら、「次へ」をクリックしてインポートを行います。
mmcの「信頼されたルート証明機関」-「証明書」にlocalhostがインポートされているのを確認して終了です。
##5 Visual Studioでのデバック実行
証明書のインポートが完了したら、Visual Studioを起動して、動作するプロジェクトを開きます。実行ボタンをクリックします。
最初の実行の際に下記のメッセージが表示される可能性があります。表示された場合、「はい」をクリックします。