Можем ли мы определить, установлен ли сертификат корневого центра сертификации?
Возможно ли это с помощью JavaScript или PHP? Я хочу иметь возможность определить, установлен ли мой личный центр сертификации на устройстве пользователя iOS или Android. Оттуда я могу решить, предоставлять ли инструкции по установке или нет. Я "гуглил" и не нашел ничего полезного. Кто-нибудь пробовал это раньше? Я хочу выяснить, на что мне следует потратить свое время, изучая. Если это невозможно, не могли бы вы предложить альтернативу в браузере?
РЕДАКТИРОВАТЬ: У меня здесь нет выбора и это не мое решение. Частный сертификат центра сертификации будет использоваться по другим соображениям безопасности.
2 answers
Я сомневаюсь, что будет какой-либо запрос устройства для проверки этого.
На самом деле я этого не делал, но вы, вероятно, могли бы придумать тест, в котором JavaScript отправляет AJAX-запрос на сервер https, который использует сертификат, который вы хотите проверить. Если запрос выполнен успешно, значит, сертификат работает. ( Этот вопрос , по-видимому, подразумевает, что запросы AJAX (правильно) завершатся неудачей, если сертификат SSL не будет подтвержден)
Обратите внимание, что, поскольку схема (http или https) URL-адрес будет отличаться (и, возможно, домен в зависимости от того, как вы это настроили), ваш тестовый сайт должен будет использовать CORS Access-Control-Allow-Origin
заголовок, позволяющий браузеру выполнить запрос. См.: Вызовы AJAX для ненадежного (самозаверяющего) HTTPS завершаются беззвучно
РЕДАКТИРОВАТЬ:
У меня было немного времени, и я собрал очень простой пример. Гото http://ssl_test.gjp.cc . Эта страница попытается сделать запрос AJAX на https://ssl_test2.gjp.cc , в котором используется самозаверяющий сертификат. Прежде чем вы доверяли ssl_test2
, вы увидите "Сбой" на странице ssl_test
, однако, как только вы доверяете сертификату для ssl_test2
, вы всегда должны видеть "Успех" на ssl_test
.
Обратите внимание, что это не доказывает, что у вашего пользователя установлен сертификат центра сертификации - все, что это доказывает, это то, что он настроил свой браузер так, чтобы доверять тестовому сайту (ssl_test2
). Если вы никогда напрямую не укажете пользователю на тестовый сайт, у него никогда не будет возможности доверять только этому сайту, так что это должно сработать достаточно хорошо.