IIS 7 ще зберігає старий сертифікат SSL


27

Я встановив новий сертифікат SSL в IIS7, видалив старий сертифікат і встановив прив’язки для нового сертифіката - так що https тепер пов'язаний лише з новим сертифікатом.

Я перезапустив IIS7 (і сам сервер Windows 2008) і перевірив сертифікат за допомогою команд:

netsh http show sslcert

Це показало лише новий сертифікат, як я і очікував

certutil -store MY

Це також показало лише новий сертифікат, а не старий, як я очікував

Я також відкрив mmc і перевірив там сертифікати, і я бачу лише новий, а не старий.

Я також використовую обліковий запис з правами адміністратора.

Однак, коли я відкриваю браузер (з будь-якого комп’ютера) і заходжу на сайт https, він все ще використовує старий сертифікат. Навіть коли я видаляю старий сертифікат із браузера, він все одно надсилає старий, а не новий.

Хтось може допомогти мені розібратися там, де я помиляюся? Як я можу витіснити старий фантомний сертифікат?

Відповіді:


28

Спочатку пару балів, які, ймовірно, для вас однакові

  • Я намагався оновити сертифікат, оскільки термін його дії закінчився.
  • У мене кілька доменів, прив’язаних до одного 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

Ви, мабуть, тут багато матеріалів, тому простіше відкрити їх у текстовому редакторі.

Ви хочете шукати в цьому файлі хеш WRONG, який ви отримали 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% часу.

Удачі :-)


3
Ти Симон серед Симонів. У нашому випадку виявилося, що наш сервер "кеширував" термін з минулим терміном, [::1]:443тоді як оновлення cert в IIS лише оновило запис для 0.0.0.0:443. Дякую!
вівторок

1
Це вирішило мою проблему з кількома доменами в одному IP; не використовується централізований магазин магазинів.
Кріс Ф Керролл

1
Мені довелося користуватися цим кілька разів. Програмне забезпечення для управління веб-хостингом PLESK час від часу перериває прив'язки сертифікатів, і мені потрібні вищевказані команди netsh, щоб усунути правопорушну прив'язку. Не впевнений, на які версії впливають усі версії, але я використовую поточну версію PLESK Onyx на Windows Server 2016.
BenSwayne

У моєму випадку це було по імені хоста та порту. Отже, для фільтрації та видалення за допомогою імені хоста командами були: "netsh http show sslcert hostnameport = www.example.com: 443" та "netsh http delete sslcert hostnameport = www.example.com: 443"
Karthik Jayapal

14

Перевірте сертифікат, який прив’язаний до сайту в IIS. Ви можете клацнути правою кнопкою миші на сайті та вибрати редагування прив’язок. Там ви повинні побачити прив'язку для порту 443, який асоціюється з SST-сертом. Це, можливо, ще вказує на старе.


Я перевірив, і сертифікат у прив’язках до порту 443 - це новий сертифікат, а не старий. Дякуємо за вашу пропозицію.
joechip

1
Дивно, я ніколи цього не бував. Хоча я ніколи не видаляю старі сертифікати. Як ти впевнений, що ти все ще отримуєш старий серт? Чи показує, що термін його дії закінчився?
Татас

Так, у веб-переглядачі ви можете перевірити реквізити сертифікату (термін придатності тощо) та його стару, яку обслуговує IIS7.
joechip

1
Я бачив це з Chrome. Chrome кешує старий сертифікат і показує це користувачеві.
TomTom

3

Я щойно це розробив. Сервер фактично сидів за сервером ISA, тому нам також довелося встановити новий сертифікат SSL на сервер ISA.


3

У мене був той самий випуск, і я перевірив прив'язки також. У мене було встановлено 2 програми в IIS, один використовував новий сертифікат, один використовував старий.

Для виправлення мені довелося повністю видалити сертифікат із сервера (потім можливо перезавантаження).

У IIS Manager -> (корінь дерева IIS) -> Піктограма сертифікатів сервера виберіть старий сертифікат і натисніть «Видалити» на панелі «Дії».


1
Так само у нас був додатковий СТОПОВАНИЙ сайт, на який посилався старий сертифікат, і як тільки ми оновили цей сайт для використання нового, фактичний веб-сайт почав показувати новий сертифікат!
Дія

1

Я відчував це під час оновлення IPv6. У мене був IIS, який надав переспрямування у випадку, якщо хтось намагався отримати доступ до послуги через HTTP, який насправді не був сервісом на базі веб-сервера. Я оновив фактичну службу (голосовий сервер) на IPv6, проте мені не вдалося оновити прив’язки для переадресації, щоб включити IPv6 адреси.

Це призвело до того, що резолюції не змогли застосувати глобальний зв'язаний сайт, який мав застарілий сертифікат. Оскільки вилов все просто 404, виявилося, що сайт не працює, а насправді він потрапляє на неправильний сайт.


0

У випадку, якщо хтось таки натрапить на це питання. Шахта була вирішена шляхом переходу

C:\inetpub\wwwroot

Тоді ви знайдете файл web.config, відкрийте його за допомогою блокнота та видаліть рядок

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

Збережіть і спробуйте знову отримати доступ до localhost або кореневого сайту вашого сервера IIS.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.