【Q&Aコーナー】ポート443でADFSの証明書認証ができない

皆さんこんにちは。国井です。
今日はWindows Server 2016のADFSサーバーの証明書認証についてです。

Windows Server 2016のADFSサーバーは外部アクセスでも、証明書のみで認証を済ませることができるとあって、前のバージョンからの移行を行うモチベーションになっていたりします。
さらに、Windows Server 2016のADFSサーバーの証明書認証では、TCP443で通信できるようになっており(これまではTCP49443を使って通信していた)、この点では大きなメリットがあります。

設定方法については、最近ADFS/Azure AD絡みの投稿をいっぱい書いてくださっているMiyaさんのサイトで紹介されています。

https://miya1beginner.com/windows-server-2016-adfs-sans-binding

本題ですが、TCP49443からTCP443に切り替えた時に、今まで行っていた証明書認証ができなくなるというご質問をいただいたので、その解決方法を紹介します。

基本的には上記のサイトで紹介されている手順を踏めば、それで必要な設定はすべて揃ったことになるのですが、証明書の入れ替えを前に行っていたりすると、スムーズに証明書認証の設定変更ができていないことがあるのです。
ADFSでは、http.sysのバインド設定で証明書とホスト名(FQDN)、それからポート番号をマッピングさせ、管理しているのですが、そのバインド設定が正しくないときがあるのです。
確認するときはコマンドプロンプトで「netsh http show sslcert」と入力すると、

こんな感じでホスト名、ポート番号、証明書の組み合わせが確認できます。
今見てもらっている組み合わせの中でチェックするポイントは、Miyaさんのブログの中にもありましたが、適切な証明書が割り当てられているか?そして、ポート番号443だけが使われるように構成されているか?という点です(私の知る限りでは)。

それを踏まえて、もう一度、上の画面を見てみると、ポート番号49443のマッピングが残されていることがわかります。ですので、これを削除しましょう。
削除するときは「netsh http delete sslcert hostnameport=sts.xxx.adfs.jp:49443」という感じで入力したうえで、もう一度「netsh http show sslcert」を実行すれば、

ほら、消えました。
この状態でサインインを試してみると、

こんな感じで画面が推移し、TCP443でも証明書認証ができるようになります。