сертификат работает по IP, но не по URL

У меня проблема с доступом к моему сайту (по https) с IEMobile 9 (WP 7.5).

Пишет, что проблема с сертификатом, как будто он недействителен. Все работает на любом другом браузере или платформе, которую я тестировал (андроид (несколько телефонов и вкладка галакси со стандартным браузером, фаерфокс, опера, дельфин), iOS (айфон и айпад с сафари и хромом), старая нокиа с симбианом, виндовс 7, линукс и мак).

Чтобы попытаться решить эту проблему, я сохранил сертификат (.cer) на сервере и получил к нему доступ из браузера телефона. Он всегда жаловался, за исключением случаев, когда я обращался к нему через IP-адрес сервера (192.168.xx.xx). В этот момент он (сказал это) правильно установил сертификат. Если затем я попытаюсь получить доступ к index.html, все еще используя IP, все работает нормально, и он не жалуется на сертификат. Если, однако, я попытаюсь получить доступ к индексу, используя фактический URL-адрес (blah.myblah.com), он снова жалуется на сертификат, как будто он не был установлен!

Это не проблема DNS, потому что он работает и обслуживает правильный IP-адрес, и телефон правильно настроен для его использования.

Сертификат подписан geotrust/rapidssl для *.myblah.com.


person Stephan    schedule 27.11.2012    source источник
comment
Вы пробовали очистить все кэши? Ошибки сертификата — это действительно плохо, поэтому, возможно, ваш браузер помнит, что это плохое место.   -  person Patrick James McDougle    schedule 27.11.2012
comment
Да, но это не имеет значения. Это происходит и на реальном телефоне и на эмуляторе (на win7)   -  person Stephan    schedule 27.11.2012
comment
Можете ли вы сказать нам, что именно говорит ошибка? Кроме того, этот вопрос может лучше подходить для serverfault.   -  person Patrick James McDougle    schedule 27.11.2012
comment
это не ошибка, а общее предупреждение системы безопасности, подобное этому (только для версии IEMobile): cdn .ttgtmedia.com/rms/misc/Exchange_2010_Mobile_2A.jpg Тогда я попытаюсь опубликовать вопрос и на SF. Надеюсь, это не считается кросспостингом... :/   -  person Stephan    schedule 27.11.2012


Ответы (2)


Это нормально. сертификаты выдаются на конкретный хост + доменное имя. По сути, код проверки SSL будет иметь что-то вроде

if (requested host name != certificate issued hostname) {
    issue security alert
}

так ты делаешь

if (192.168.xx.xx != example.com) {

и получите предупреждение системы безопасности.

person Marc B    schedule 27.11.2012
comment
Я не получаю никаких предупреждений безопасности, используя IP. Я получаю это при использовании URL-адреса, для которого выдан сертификат - person Stephan; 27.11.2012
comment
Хм. убедитесь, что geotrust/rapidssl находится во встроенном списке ЦС телефона/браузера. - person Marc B; 27.11.2012
comment
Я так и сделал (правда сейчас опять не могу найти ссылку, она была где-то на сайте MS), а там GeoTrust с 3-мя записями. У моего сертификата есть ключ SHA1, и один из этих трех был SHA1. Другие были SH256 и что-то еще, что я сейчас не могу вспомнить. - person Stephan; 27.11.2012
comment
нашел: msdn.microsoft.com/en -us/library/gg521150%28v=VS.92%29.aspx посмотрев получше, моего ключа нет в списке. Тем не менее, если я установил сертификат один раз, почему он не работает при последующих посещениях? - person Stephan; 28.11.2012

У меня были проблемы с сертификатами, связанные с тем, как некоторые реализации HTTP поверх TLS ищут SubjectAltName(SAN). В RFC2818 указано, что если имя хоста является записью DNS, реализации должны проверять имя хоста. против массива расширений subjectAltName ищет запись DNS, которая соответствует хосту. В случае отсутствия subjectAltName используется CommonName. Если имя хоста является IP-адресом, сертификат должен содержать запись IP-адреса subjectAltName, совпадающую с IP-адресом. Также обратите внимание, что более новый RFC6125 не рекомендует использование подстановочных сертификатов, поэтому МОЖЕТ БЫТЬ уже применяет это, хотя я могу ошибаться.

Моим первым шагом было бы проверить часть сертификата SAN и убедиться, что она имеет запись DNS, соответствующую хосту вашего сайта.

person Grasshopper    schedule 08.07.2014