IIS7に新しいSSL証明書をインストールし、古い証明書を削除して、新しい証明書のバインディングをセットアップしました。これで、httpsは新しい証明書にのみバインドされます。
IIS7(およびWindows 2008 Server自体)を再起動し、次のコマンドを使用して証明書を確認しました。
netsh http show sslcert
予想通り、これは新しい証明書のみを示しました
certutil -store MY
これも新しい証明書のみを示し、古い証明書は示していませんでした。
また、mmcを開いて証明書を確認したところ、新しいものだけが表示され、古いものは表示されません。
管理者権限のあるアカウントも使用しています。
ただし、(任意のコンピューターから)ブラウザーを開いてhttpsサイトにアクセスすると、古い証明書がまだ使用されています。ブラウザから古い証明書を削除しても、古い証明書が送信され、新しい証明書は送信されません。
誰かが私が間違っているところを解決するのを手伝ってくれる?古いファントム証明書を削除するにはどうすればよいですか?
まずあなたにとっておそらく同じであるいくつかの点
まず、https://www.digicert.com/help/
にアクセスしてDigiCertツールをダウンロードすることを強くお勧めします。オンラインでもご利用いただけます。
Webサイトにhttps://example.com
と入力すると、有効期限と拇印(MSが証明書ハッシュと呼ぶもの)が表示されます。これはリアルタイムの検索を行うので、ブラウザー(または中間サーバー)が何かをキャッシュしているかどうかを心配する必要はありません。
一元化された証明書ストアを使用している場合は、.pfxファイルが最新バージョンであることを100%確認する必要があるため、ストアディレクトリに移動して次のコマンドを実行します。
C:\WEBSITES\SSL> certutil -dump www.example.com.pfx
これにより、有効期限とハッシュ/拇印が表示されます。明らかに、この有効期限が間違っている場合は、おそらく間違った証明書をファイルシステムにエクスポートしただけなので、最初にそれを修正します。
CCSを使用している場合、このcertutilコマンドが(更新された証明書の)予想される有効期限を提供すると想定して、続行できます。
次のコマンドを実行します。
netsh http show sslcert > c:\temp\certlog.txt
notepad c:\temp\certlog.txt
ここには多くのものが含まれている可能性が高いので、テキストエディタで開く方が簡単です。
このファイルでdigicert.com
から取得した間違ったハッシュ(またはChromeから取得したサムプリント)を検索する必要があります。
私にとってこれは次のことをもたらしました。 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
これが「不適切な」拇印であることを確認したので、次のコマンドで削除できる単一のレコードが予想されます。
C:\Windows\system32>netsh http delete sslcert ipport=10.0.0.1:443
SSL Certificate successfully deleted
うまくいけば、Digicertに戻ってコマンドを再実行すると、期待される証明書のサムプリントが表示されます。確かな名前がある場合は、すべてのSAN名を確認する必要があります。
おそらく、ここでIISRESETを実行して、後で予期しない事態が発生しないようにする必要があります。
最後の注意:集中化された証明書ストアを使用していて、そこから証明書を取得しているかどうかを判断しようとする不規則な動作が発生している場合でも、心配しないでください。これは誤りではありません。それは時々新しいファイルをすぐに拾うようですが古いものをキャッシュします。何らかの変更を行った後にSSLバインディングを開いて再保存すると、SSLバインディングはリセットされるように見えますが、100%の確率ではリセットされません。
幸運を :-)
IISのサイトにバインドされている証明書を確認してください。サイトを右クリックして、[バインディングの編集]を選択できます。そこに、SSL証明書に関連付けられているポート443のバインディングが表示されます。それはまだ古いものを指している可能性があります。
同じ問題があり、バインディングもチェックしました。 IISに2つのアプリをインストールしました。1つは新しい証明書を使用し、もう1つは古い証明書を使用していました。
修正するには、サーバーから証明書を完全に削除する必要がありました(その後、再起動する可能性があります)。
IISマネージャ->(IISツリールート)->サーバー証明書]アイコンから、古い証明書を選択し、[アクション]ペインで[削除]をクリックします。
私はそれを解決しました。サーバーは実際にはISAサーバーの後ろに座っていたため、新しいSSL証明書をISAサーバーにインストールする必要がありました。
これは、IPv6のアップグレード中に発生しました。 IIS実際にWebサーバーベースのサービスではないHTTP経由でサービスにアクセスしようとした場合に備えてリダイレクトを提供しました。実際のサービス(音声サーバー)をIPv6に更新しました、ただし、リダイレクトのバインディングを更新してIPv6アドレスを含めることができませんでした。
これにより、古くなった証明書が含まれているすべてのサイトにグローバルにバインドされたcatchにフェイルオーバーする解決策がもたらされました。キャッチはすべて単純に404であるため、実際には間違ったサイトにヒットしていても、サイトが機能していないように見えました。
まだ誰かがこの問題に出くわした場合。私に行くことによって解決されました
C:\inetpub\wwwroot
次に、web.configファイルを見つけ、メモ帳を使用して開き、次の行を削除します。
<httpRedirect enabled="true" destination="http://foo.company.org" />
保存して、IISサーバーのローカルホストまたはルートサイトにアクセスします。