Неправилният сертификат за локален хост се обслужва от IIS

Добре, имам проблем със SSL, който изглежда не мога да преодолея на тази машина 1 Win7 x64. Използвам самоподписани сертификати от години и дори съм писал за тях преди, така че имам опит. Но нещо се случва, което този път не мога да разбера.

Имам (2) създадени и инсталирани на моята машина SSL сертификати за локален хост.

  1. localhost (приятелско име), издадено и създадено в IIS (7.5). Той съдържа стойностите „Издадено до“ и „Издадено от“ на името на моята машина: „DevMachine123“. Това е сертификатът, който се предоставя за приложения, конфигурирани под „Уеб сайт по подразбиране“ в IIS.
  2. localhost SSL сертификат, създаден с помощта на инструмента makecert.exe, където е използвано CN=localhost (общо име). Той съдържа стойностите „Издадено до“ и „Издадено от“ на „localhost“. Това е SSL сертификатът, който искам да се показва в IIS за моите приложения, конфигурирани под „Уеб сайт по подразбиране“.

Грешката, която получавам е:

„Сертификатът за сигурност, представен от този уебсайт, е издаден за адрес на друг уебсайт.“

Когато преглеждам сертификата, който се обслужва от браузъра IE: той показва, че се използва сертификатът за локален хост, издаден на „DevMachine123“, а не локалният хост, издаден на локален хост (№2 по-горе), което трябва да разреши този проблем . Оттук и несъответствието на името, защото „DevMachine123“ не съвпада с „localhost“.

Друга точка, която трябва да се направи; моите сертификати са добавени към „Доверени главни сертифициращи органи“, така че и двата са надеждни сертификати.

Последна точка, която трябва да направя, проверих конфигурацията на обвързването на https port 443 за „Уеб сайт по подразбиране“ на моята машина в IIS. Преглеждам сертификата и той показва, че правилният сертификат за локален хост е обвързан (#2 по-горе с CN=localhost).

Чувствам, че покрих основите си тук (да, видях това и това така че, моля, направете без повторно публикуване). Какво ми липсва тук?

Благодаря!


person atconway    schedule 12.10.2012    source източник


Отговори (4)


Имах подобен проблем и също бях преминал през проверките, които споменахте по-горе за обвързванията на сайта. Изпълних следната команда netsh

netsh http show sslcert

Това ми показа две обвързвания на SSL сертификат. Един на IP:Port 0.0.0.0:443 с правилния сертификат и един на IP:Port [::]:443 с изтекъл сертификат. Отворих CertMgr.msc за локалния компютър (вижте тук за инструкции) и потърси невалидния сертификат и откри, че е изтекъл.

За да разреша проблема, направих следното

  1. netsh http delete sslcert ipport=[::]:443
  2. iisreset /restart
person IsolatedStorage    schedule 26.11.2012
comment
Бих ви дал около 10 марки за това, ако можех. Някои отговори са точно толкова полезни. Използвал съм помощната програма netsh.exe преди, но никога не съм мислил да опитам това. Проработи! Благодаря! - person atconway; 06.12.2012
comment
Случайно изтрих сертификата за локален хост, който беше издаден от доверен орган. Този, който не съм създал... има ли все пак за задействане на повторното създаване на този сертификат? - person hal9000; 04.06.2013
comment
Hal - ако имате друга машина, която съдържа същия сертификат, можете да го експортирате от тази машина, да го копирате на вашата и след това да го импортирате. - person IsolatedStorage; 19.08.2013
comment
Имах същия проблем и това беше решение! - person Siim Nelis; 18.03.2014
comment
Дори не мога да започна да опиша колко много облекчение ми даде току-що, след като се борих с IIS в продължение на часове, за да се отърва от фалшивия сертификат. Много благодаря. - person Alex Marshall; 21.03.2015
comment
Такъв страхотен съвет!! Работи за мен. Като шеф! - person sshirley; 24.06.2016
comment
Благодаря ти! Спаси моя/нашият ден! Друг провал за администриране, базирано на GUI. - person Trygve; 12.10.2017
comment
Милиард благодаря... Моите проблеми с IIS, лоша документация. ако имате множество сайтове като мен, е много трудно да разберете какво не е наред. Имам 10 уебсайта с SSL, всички са настроени правилно, но само един сайт прави правилното нещо. така че когато направих netsh http show sslcert, имах дълъг списък със сертификати, но забелязах там един списък, който нямаше обвързан сайт, само IP, изглеждаше като IP:Port:‹IP Address›, така че стартирах delete netsh http delete sslcert ipport=<ipAddress>:443 и готово всичко работеше отново след рестартиране. - person PBo; 31.03.2021

Много подобен отговор на @IsolatedStorage, но с някои повече подробности за това какво ми помогна.

Първо няколко точки, които вероятно са еднакви за вас

  • Опитвах се да актуализирам сертификат, защото е изтекъл.
  • Имам няколко домейна, свързани с един и същи 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% от времето.

Късмет :-)

person Simon_Weaver    schedule 08.04.2016
comment
благодаря, че предложи digicert.com, той ми показа, че моят сертификат е изпратен правилно - person Les; 07.07.2016
comment
Благодаря ти! Спаси моя/нашият ден! Друг провал за администриране, базирано на GUI. Този отговор беше на място - person Trygve; 12.10.2017
comment
@Trygve IIS със сигурност има някои големи грешки. Трудно за вярване. - person Simon_Weaver; 12.10.2017
comment
Имах много подобен проблем, със сертификат в My store за IP на сървъра и грешен (стар) сертификат, който се обслужваше. Би било чудесно да знаете как/защо/кога е създаден този сертификат! - person mgrollins; 06.12.2018
comment
PS. Оттогава преминах към Cloudflare пред моите сайтове, което прави много по-опростена (и усъвършенствана) работа с HTTPS. Дните на справяне със стари бъги IIS свършиха (ако вашата ситуация позволява това). - person Simon_Weaver; 07.01.2020
comment
ПАК СЕ СЛУЧИ! ТОЛКОВА ЛУД - person Simon_Weaver; 27.05.2020

Същите симптоми

Променено HTTPS обвързване в падащия списък към IP на сървъра (в диалоговия прозорец за обвързване на сайта). Беше настроено на „всички неназначени“ Получих предупреждение за презаписване на съществуваща комбинация сертификат/IP, което приех и проблемът беше разрешен.

person Matt Evans    schedule 19.05.2014

Уверете се, че имате само един сайт, зададен за всяко обвързване в IIS.

Ако са инсталирани сайтът по подразбиране и отделен, и двата може да имат HTTPS обвързване на един и същи порт. Ако това се случи, сервираният сертификат може да е този от другия сайт.

person j8048188    schedule 05.11.2018