Проблема SSL на iPhone

Я добавил сертификат SSL (от godaddy, но также и попробовал rapidssl) к веб-сайту.

Safari и IE могут и просмотреть к https://и сообщить, что сертификат действителен без предупреждений. Если, однако, я пытаюсь просмотреть к тому же адресу от iPhone I, получают недопустимую ошибку сертификата. Я использую heroku в качестве хоста к рассматриваемому веб-сайту.

Кто-либо видел это? Я озадачен, почему 2 различным iPhone не удалось бы сделать это, но настольные браузеры очень хорошо...

7
задан cmaughan 2 January 2010 в 14:39
поделиться

3 ответа


Проблема здесь оказалась в том, что iPhone не поддерживает указание имени сервера (SNI), которое требуется для того, чтобы SNI SSL из heroku заработал. (EDIT) Теперь он поддерживается на iOS 3.2 и далее.

Вы можете подтвердить SNI, перейдя на следующий URL из Safari по телефону:

https://sni.velox.ch

Я выяснил, что могу установить следующую SSL-настройку в iphone-клиенте:

kCFStreamSSLPeerName = Null

... и это исправит проблему. Но я пока не выяснил, как это влияет на безопасность - документы не очень понятны.

Насколько я понимаю, когда вы устанавливаете пользовательский домен на облачном хосте, например heroku, он указывает на прокси, и это имя не совпадает с именем вашего хоста сертификата. Браузеры, такие как Safari и IE, поддерживают SNI, и знают, как это выяснить - но телефон этого не делает.

Как я уже говорил выше, сейчас это менее проблематично, если только вы не поддерживаете iOS 3.1.3 или менее...

.
8
ответ дан 6 December 2019 в 12:51
поделиться

Просто потому, что эти два центра сертификации не находятся в хранилище доверенных сертификатов iPhone, а предназначены для Windows, firefox и т.д.

EDIT:

Полагаю, предыдущий постер правильный, вы не связываете промежуточные сертификаты. Возможно, ваш сертификат был подписан rapidssl.com, но сертификат rapidssl.com был подписан Equifax. Каждый сертификат имеет поле "Имя эмитента" и поле "Имя субъекта"; подумайте об этом как о паре имен (X,Y). Тематическое имя вашего сертификата отражает имя вашего сайта, и оно было подписано rapidssl, так что эта пара является чем-то вроде (rapidssl, www.whatever.com). Сертификат rapidssl был подписан эквифаксом, так что эта пара (equifax, rapidssl) является чем-то вроде пары. И эквифакс может быть (эквифакс, эквифакс). Корневой сертификат должен иметь одно и то же имя эмитента и имя субъекта. Как вы можете видеть, это формирует цепочку форм (A,A) (A,B) (B,C) (C,D) ...., какой бы длинной она ни была. Она редко бывает длиннее 3. Правило для SSL заключается в том, что вы должны посылать каждый сертификат в цепочке , за исключением корневого сертификата. Некоторые клиенты могут уже иметь промежуточные сертификаты, но никогда не стоит рассчитывать на это.

.
1
ответ дан 6 December 2019 в 12:51
поделиться

Вам также нужно обратиться к промежуточному сертификату, чтобы вся цепочка сертификатов вернулась к корневому сертификату.

Смотрите запись в этом блоге для описания этой же проблемы и того, как он её решил для Apache.

.
7
ответ дан 6 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: