Сначала пара моментов, которые, вероятно, одинаковы для вас
- Я пытался обновить сертификат, потому что срок его действия истек.
- У меня есть несколько доменов, привязанных к одному и тому же IP. Это сертификат SAN, но это, вероятно, не имеет значения.
- Я пытался использовать централизованное хранилище сертификатов. Опять же я думаю, что это не имеет отношения к большей части моего ответа.
- Я уже пытался обновить сертификат, но он не отображал новую дату.
- Возможно, вы сейчас в панике, если срок действия вашего старого сертификата уже истек. Сделай глубокий вдох ...
Во-первых, я бы настоятельно рекомендовал зайти https://www.digicert.com/help/
и загрузить их инструмент DigiCert. Вы также можете использовать его онлайн.
Войдите в свой веб-сайт, https://example.com
и он покажет вам дату истечения срока действия и отпечаток (что MS называет хэш сертификата). Он выполняет поиск в реальном времени, поэтому вам не нужно беспокоиться о том, кэширует ли ваш браузер (или промежуточный сервер) что-либо.
Если вы используете централизованное хранилище сертификатов, вы должны быть на 100% уверены, что файл .pfx является последней версией, поэтому перейдите в каталог вашего хранилища и выполните следующую команду:
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 на моем сайте по умолчанию, но этому серверу несколько лет, и я думаю, что что-то просто испортилось и застряло.
Итак, вы хотите удалить его.
Чтобы быть в безопасности, сначала нужно выполнить следующую команду, чтобы убедиться, что вы удаляете только один элемент:
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 после внесения каких-либо изменений, кажется, сбрасывает ее, но не в 100% случаев.
Удачи :-)
[::1]:443
тогда как обновление сертификата в IIS только обновило запись для0.0.0.0:443
. Спасибо!