古いSSL証明書を引き続き提供するIIS 7


27

IIS7に新しいSSL証明書をインストールし、古い証明書を削除して、新しい証明書のバインドを設定しました。これで、httpsは新しい証明書のみにバインドされます。

IIS7(およびWindows 2008 Server自体)を再起動し、次のコマンドを使用して証明書を確認しました。

netsh http show sslcert

予想どおり、これは新しい証明書のみを示していました

certutil -store MY

また、これは新しい証明書のみを表示し、古い証明書は表示しませんでした。

また、mmcを開いてそこで証明書を確認しましたが、古い証明書ではなく新しい証明書のみが表示されます。

また、管理者権限を持つアカウントを使用しています。

ただし、(任意のコンピューターから)ブラウザーを開いてhttpsサイトにアクセスすると、まだ古い証明書が使用されています。ブラウザから古い証明書を削除しても、新しい証明書ではなく古い証明書が送信されます。

誰かが私が間違っているところを解決するのを手伝ってくれますか?古いファントム証明書をどのように除害できますか?

回答:


28

まず、おそらくあなたにとって同じであるいくつかのポイント

  • 有効期限が切れたため、証明書を更新しようとしました。
  • 同じIPに複数のドメインがバインドされています。それらはたまたまSAN証明書ですが、それはおそらく無関係です。
  • 集中証明書ストアを使用しようとしていました。繰り返しますが、これは私の答えのほとんどとは無関係だと思います。
  • すでに証明書を更新しようとしましたが、新しい日付が表示されていませんでした。
  • 古い証明書の有効期限がすでに切れている場合、おそらく今パニックに陥っています。深呼吸する...

最初にhttps://www.digicert.com/help/、DigiCertツールにアクセスしてダウンロードすることを強くお勧めします。オンラインで使用することもできます。

Webサイトに入力するhttps://example.comと、有効期限とthumb印(MSが証明書ハッシュと呼ぶもの)が表示されます。リアルタイムのルックアップを行うので、ブラウザ(または中間サーバー)が何かをキャッシュしているかどうか心配する必要はありません。

中央証明書ストアを使用している場合、.pfxファイルが最新バージョンであることを100%確認したいので、ストアディレクトリに移動して次のコマンドを実行します。

C:\WEBSITES\SSL> certutil -dump www.example.com.pfx

これにより、有効期限とハッシュ/ th印が表示されます。明らかに、この有効期限が間違っている場合、間違った証明書をファイルシステムにエクスポートしている可能性が高いので、まずそれを修正します。

CCSを使用している場合、このcertutilコマンドが(更新された証明書の)予想有効期限を提供すると仮定すると、続行できます。

次のコマンドを実行します。

netsh http show sslcert > c:\temp\certlog.txt
notepad c:\temp\certlog.txt

ここにはたくさんのものがあるので、テキストエディタで開くのが簡単です。

このファイルで、digicert.com取得した間違ったハッシュ(または、Chromeから取得したthumb印)を検索する必要があります。

私にとって、これは以下をもたらしました。予想されるドメイン名ではなく、IPにバインドされていることがわかります。これが問題です。これは(理由はどうあれ、わからないが)更新したIISのバインディングセットよりも優先されるようですexample.com

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

私はこのバインディングがどこから来たのかさえ知りません-私はデフォルトのサイトにSSLバインディングさえ持っていませんが、このサーバーは数年前であり、私は何かが壊れて立ち往生したと思います。

そのため、削除する必要があります。

安全のために、最初に次のコマンドを実行して、この1つのアイテムのみを削除するようにしてください。

C:\Windows\system32>netsh http show sslcert ipport=10.0.0.1:443

SSL Certificate bindings:
-------------------------

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

これが「悪い」thumb印であることが確認され、このコマンドで削除できる単一のレコードが期待されます。

C:\Windows\system32>netsh http delete sslcert ipport=10.0.0.1:443

SSL Certificate successfully deleted

Digicertに戻ってコマンドを再実行すると、期待される証明書のprint印が得られます。念のため、すべてのSAN名を確認する必要があります。

たぶん、後で驚くことのないように、ここでIISRESETをしたいでしょう。

最後の注意:中央の証明書ストアを使用していて、そこから証明書を取得しているかどうかを判断しようとする不安定な動作が見られる場合、心配しないでください-それはあなたのせいではありません。新しいファイルをすぐに取得することもありますが、古いファイルはキャッシュするようです。何らかの変更を行った後にSSLバインディングを開いて再保存すると、それがリセットされるように見えますが、100%の時間ではありません。

がんばろう :-)


3
あなたはサイモンの中のサイモンです。私たちの場合、[::1]:443IISで証明書を更新してものレコードのみが更新されるのに対して、サーバーは期限切れの証明書を「キャッシュ」したことが判明しました0.0.0.0:443。ありがとうございました!
tuespetre

1
これにより、同じIP上の複数のドメインに関する問題が解決しました。中央証明書ストアを使用していません。
クリスFキャロル

1
これを数回使用しなければなりませんでした。PLESK Webホスティング管理ソフトウェアは、証明書のバインドをときどき台無しにし、問題のあるバインドを削除するには、上記のnetshコマンドが必要になります。わからないバージョンでは、すべての影響を受けているが、私は2016のWindows Server上でPLESKオニキスの現在のバージョンを使用していた
BenSwayne

私の場合、ホスト名とポートによるものでした。だから、ホスト名でフィルタおよび削除するには、コマンドは次のようになります。 "netshをHTTP表示さのsslcert hostnameport = www.example.com:443"と"netshのHTTPの削除のsslcert hostnameport = www.example.com:443"
カルティクJayapal

14

IISでサイトにバインドされている証明書を確認します。サイトを右クリックして、バインディングの編集を選択できます。そこには、SSL証明書に関連付けられているポート443のバインディングが表示されます。それはまだ古いものを指しているかもしれません。


チェックすると、ポート443のバインディングの証明書は古い証明書ではなく、新しい証明書です。ご提案ありがとうございます。
joechip

1
奇妙なことに、私はこれが起こったことがありませんでした。古い証明書は削除しませんが。まだ古い証明書を取得していると確信していますか?有効期限が切れていることを示していますか?
タタス

はい。ブラウザで、証明書の詳細(有効期限など)およびIIS7が提供している古い証明書を確認できます。
joechip

1
Chromeでこれを見ました。Chromeは古い証明書をキャッシュし、ユーザーに表示します。
トムトム14年

3

うまくいきました。サーバーは実際にはISAサーバーの後ろに座っていたため、新しいSSL証明書をISAサーバーにインストールする必要がありました。


3

私は同じ問題を抱えており、バインディングもチェックしました。IISに2つのアプリをインストールしました。1つは新しい証明書を使用し、もう1つは古い証明書を使用していました。

修正するには、サーバーから証明書を完全に削除する必要がありました(その後、再起動する可能性があります)。

IISマネージャー->(IISツリールート)->サーバー証明書アイコンから、古い証明書を選択し、[操作]ウィンドウで[削除]をクリックします。


1
同様に、実際には古い証明書を参照する追加のSTOPPEDサイトがあり、新しいサイトを使用するようにそのサイトを更新すると、実際のライブサイトに新しい証明書が表示され始めました。
アクションダン

1

IPv6のアップグレード中にこれを経験しました。誰かが実際にWebサーバーベースのサービスではないHTTP経由でサービスにアクセスしようとした場合に備えて、IISにリダイレクトを提供させました。実際のサービス(音声サーバー)をIPv6に更新しましたが、リダイレクトのバインドを更新してIPv6アドレスを含めることができませんでした。

これにより、古い証明書が存在するグローバルにバインドされたすべてのサイトに解決が失敗しました。キャッチはすべて404であるため、実際には間違ったサイトにアクセスしているときに、サイトが機能していないように見えました。


0

誰かがまだこの問題に遭遇した場合に備えて。私に行って解決しました

C:\inetpub\wwwroot

次に、web.configファイルを見つけ、メモ帳を使用してそれを開き、次の行を削除します

<httpRedirect enabled="true" destination="http://foo.company.org" />

保存して、IISサーバーのlocalhostまたはルートサイトへのアクセスを再試行します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.