2013-08-27 2 views
4

Возможно ли это с помощью JavaScript или PHP? Я хочу узнать, установлен ли мой частный CA на iOS или Android-устройстве пользователя. Оттуда я могу решить, предоставлять инструкции для установки или нет. Я был «googlin» и не нашел ничего полезного. Кто-нибудь пробовал это раньше? Я хочу узнать, что я должен потратить на обучение. Если это невозможно, можете ли вы предложить альтернативу в браузере?Можем ли мы определить, установлен ли корневой сертификат ЦС?

EDIT: У меня нет выбора здесь, и это не мое решение. Частный сертификат CA будет использоваться по другим причинам безопасности.

ответ

6

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

Я на самом деле не сделал этого, но вы, вероятно, могли бы придумать тест, где JavaScript делает запрос AJAX на сервер https, который использует сертификат, для которого вы хотите проверить. Если запрос завершается успешно, то сертификат работает. (This question, похоже, подразумевает, что запросы AJAX (правильно) потерпят неудачу, если сертификат SSL не будет проверяться)

Обратите внимание, что, поскольку схема (http или https) URL-адреса будет отличаться (и, возможно, домен зависит от как вы это настроили), ваш тестовый сайт должен будет использовать заголовок CORSAccess-Control-Allow-Origin, чтобы браузер мог выполнить запрос. См.: AJAX calls to untrusted (self-signed) HTTPS fail silently

EDIT: У меня было время и собрал очень простой пример. Goto http://ssl_test.gjp.cc. Эта страница попытается сделать запрос AJAX к https://ssl_test2.gjp.cc, в котором используется самозаверяющий сертификат. Прежде чем вы доверяете ssl_test2, вы увидите «Сбой» на странице ssl_test, однако, как только вы доверяете сертификату для ssl_test2, вы всегда должны видеть «Успех» на ssl_test.

Обратите внимание, что это не доказывает, что ваш пользователь имеет сертификат CA, - все это доказывает, что они настроили свой браузер, чтобы доверять тестовому сайту (ssl_test2). Если вы никогда не укажете пользователя на тестовый сайт, у них никогда не будет возможности доверять только этому сайту, поэтому это должно работать достаточно хорошо.

+0

Я хотел бы добавить, что только потому, что запрос работал не означает, что был установлен сертификат. Пользователю также может быть любопытно и вручную принять экранное сообщение с вопросом, доверяет ли он неизвестному сертификату. Итог: не используйте частные сертификаты CA. – Sven

+0

@ Возможно, вы хотели бы предложить альтернативу? –

+0

@Sven В моем ответе описывается использование запроса AJAX, будут ли мобильные браузеры отображать сообщение, чтобы принять сертификат в этом случае? –

1

Может быть this поможет:

<img src="https://the_site/the_image" onerror="redirectToCertPage()" /> 
Смежные вопросы