
Браузер даже не дает права проигнорировать ошибку. По привычке первым делом взгляд упал на дату и время. Убедившись, что временные параметры на компьютере установлены верно, перешел на другой ресурс «yandex.ru»:

Тут дела обстояли чуть лучше, Firefox уже предлагает добавить сертификат в хранилище доверенных. Тут пришлось уже включать мозги, т.к. активно пользуюсь сервисом Яндекс.Деньги и любые утечки для меня существенны. Первым делом решил проверить, что именно браузеру не нравится в сертификате:

Нет доверия стороне выдавшей сертификат. И такая картина на всех ресурсах, где используется безопасное соединение HTTPS.
Для использования шифрованного канала связи, ваш браузер использует протокол SSL (или TLS) (HTTPS пользуется им), который, в свою очередь, использует сертификат проверки подлинности. Этот сертификат хранит в себе информацию как для шифрования данных, так и для идентификации WEB-сервера, к которому вы обращаетесь. Помимо всей прочей информации, хранимой в сертификате (тип шифрования, альтернативные имена и т.д.), нас интересуют открытый ключ, который решает проблему №1 — шифрование в открытых сетях и информация о центре, выдавшем этот сертификат, которая решает проблему №2 — доверие к открытому ключу.
Опишу на примерах.
Сценарий 1:
1. Сервис Яндекс хочет организовать безопасный канал связи со своими пользователями и генерирует для этого пару ключей (открытый и закрытый).
2. Я, как клиент сервиса Яндекс, получаю от него открытый ключ и шифрую им все свои данные. При этом я уверен, что прочитать данные сможет только владелец закрытого ключа, в нашем случае владелец — сервис Яндекс.
Этим самым сервис Яндекс решает проблему шифрования в открытых сетях.
А что если некий троянский вирус встанет между вами и сервисом Яндекс (к примеру, в роли сквозного прокси-сервера)…???
Сценарий 2:
1. Троян получает от сервиса Яндекс открытый ключ.
2. Троян генерирует пару своих ключей и передает открытую часть вам от имени сервиса Яндекс.
3. Все сообщения, адресованные от вас сервису Яндекс, перехватываются и дешифруются трояном, а троян в свою очередь шифрует эти данные ключом от Яндекс и передает их ему же. Вот тут и возникает проблема №2, а именно, проблема доверия к открытому ключу.
Данная проблема решается третьим лицом, которому доверяет, как сервис Яндекс, так и клиент. В данном случае запись указывала на AtomPark Software Inc, которая выдала тот самый сертификат подлинности сервису Яндекс.
Вернемся к моему сертификату и удостоверимся, что мы доверяем третьему лицу. В поле Общее имя (CN) группы «кем выдано» стоит запись «AtomPark Software Inc». Первый признак доверия этому центру сертификации – наличие его корневого сертификата в хранилище доверительных центров. В Mozille этот список можно открыть так: Настройка-> Дополнительно-> Сертификаты-> Просмотреть сертификаты-> Центры сертификации. По имени нашел сертификат:

На первый взгляд все в порядке. Решил сверить отпечатки SHA1 сертификатов. Полез в иерархию и увидел следующее:

В иерархии сертификатов корневым сертификатом является сам сертификат (самоподписанный).
Чтобы окончательно убедиться, что это недействительный сертификат, с браузера Chrome выполнил Online проверку актуального сертификата sslshopper.com и сверил серийные номера:

Теперь было необходимо найти этот троян. В настройках прокси было все чисто, а антивирус не дал никаких результатов. Полез в мониторинг сети и заметил некое приложение, которое проявляло активность всякий раз, когда я обращался к веб сервисам:

Первая же ссылка в интернете раскрыла все карты. Оказалось, что недавно наше руководство внесло некоторые поправки в политику защиты конфиденциальной информации. Было решено установить всему персоналу программу StaffCop, которая осуществляет мониторинг деятельности сотрудников. После отключения данной службы, решились не только проблемы с сертификатами, но и с моим основным браузером Chrome. Несмотря на большое описание, фактически задача была решена очень быстро, и я надеюсь, что последовательность моих действий поможет кому-либо.
А напоследок, то, как должны выглядеть «правильные» сертификаты:

Комментарии (33)

bougakov
12.10.2015 18:48+5Было решено установить всему персоналу программу StaffCop
После отключения данной службы
Ваша организация централизованно ставит сотрудникам софт и доверенные сертификаты, но не отбирает админские права (без которых не получится остановить службу)? Оригинальненько.
GebekovAS
12.10.2015 18:50+3Права на самом деле отобраны (у большей части), просто я отношусь к пользователям с особыми правами.

ploop
12.10.2015 20:31+1Было решено установить всему персоналу программу StaffCop, которая осуществляет мониторинг деятельности сотрудников
Я правильно понимаю, что о таких действиях сотрудники должны быть информированы под подпись?
Delphinum
13.10.2015 01:08+1Там где работает автор, начальство мало интересуется своими обязанностями.

mayorovp
12.10.2015 20:39+1в иерархии сертификатов корневым сертификатом является сам сертификат (самоподписанный).
Нет, это был не самоподписанный сертификат. Наверху иерархии он оказался по той причине, что сертификат его издателя не был найден.
GebekovAS
12.10.2015 20:47Согласен, запись кем выдан уже говорит нам, что это не самоподписанный. Меня иерархия запутала, обычно системное окно отображает корневой сертификат даже если ему нет доверия=) Когда в хроме увидел, что сертификат имеет свой ЦС, то удостоверился что он не самоподписанный, но забыл прописать в статье.

mayorovp
12.10.2015 21:57+1«Сертификат известен, но нет доверия» и «сертификат не найден» — это разные ситуации, и обрабатываются они по разному.
Обычно сервер отдает не только свой сертификат — но и всю цепочку. Однако, так делать не обязательно. Ваш прокси-сервер решил послать только свой сертификат — вот и получилось что получилось.
GebekovAS
12.10.2015 23:40Спасибо за разъяснение, но разве информация в поле «иерархия сертификата» не идентична информации во вкладке «путь сертификации» в системном окне просмотра свойств сертификата? Мне всегда казалось, что если сертификат выдан каким либо центром сертификации, то он должен отображаться в пути сертификации (даже если сертификата физически нет, но описание все равно должно быть указано).

mayorovp
13.10.2015 06:09Да, идентична. Нет, при ненайденном издателе сертификат в обоих окнах остается единственной строчкой насколько я помню.

ipswitch
12.10.2015 22:27Догадался кто виновник сразу после упоминания AtomPark Software.
Означенный StaffCop — не новая программа, но так и не отлаженная. Жуткое глюкалово! После её установки многое начинает глючить и тормозить.
vma
13.10.2015 15:00Уже много более качественных, стабильных и функциональных аналогов есть, вот например SecureTower:
falcongaze.ru

J_o_k_e_R
13.10.2015 00:03+3Почему chrome, а не Google, но mozilla, а не Firefox? Может стоит называть правильно то, про что Вы пишете? Если что, ПО с названием mozilla (suite) тоже было, но Вы явно не про него.

GebekovAS
13.10.2015 08:07+1Это моя давняя привычка от которой пора избавиться=) Заголовок и метки не стал трогать, а в основном подправил. Спасибо за резонное замечание.

SkidanovAlex
13.10.2015 03:07+1> Браузер даже не дает права проигнорировать ошибку.
Если я правильно помню, если развернуть «Технические Детали» внизу, там будет опция проигнорировать ошибку.
ComodoHacker
13.10.2015 09:49Вы не совсем верно интерпретировали свои наблюдения.
StaffCop установил свой корневой сертификат также и в хранилище сертификатов Firefox, его видно на вашем скриншоте окна «Управление сертификатами». Обратите внимание на надпись «Модуль защиты» рядом с ним, она говорит о том, что сертификат не встроенный, а установлен извне.
Но это не сработало из-за пиннинга, который в Firefox работает жестко. В то время как Chrome только отправляет информацию в Гугл о подозрительных сертификатах.
И еще, если пользуетесь Firefox, обязательно установите расширение Cretificate Patrol. Оно поможет заметить подозрительный сертификат по косвенным признакам, даже если он подписан как положено (например украденным ключом корневого CA).
GebekovAS
13.10.2015 15:24Спасибо за подробное разъяснение. Я заметил, что корневой сертификат присутствует в хранилище (про «модуль защиты» не знал) и стал грешить на то, что сертификат самоподписанный, что и сподвигло меня на онлайн проверку. Комментарием выше мне уже объяснили, что отсутствие корневого сертификата в иерархии не признак самоподписанного сертификата. Получается, мне просто повезло, что у FireFox более жесткий процесс пиннинга чем у Chrome.
Теперь возник вопрос: Будет ли правильным все эти поправки перенести в конец статьи или наличие их в комментариях будет достаточным?
mayorovp
13.10.2015 16:01Кстати, интересный вопрос — а пинниг ли это, или корневому сертификату просто нет доверия?
Что, если снова найти корневой сертификат в хранилище и нажать на кнопку «Изменить доверия»?ComodoHacker
13.10.2015 16:44Кстати, интересный вопрос — а пинниг ли это, или корневому сертификату просто нет доверия?
В данном случае это одно и то же. :)
mayorovp
13.10.2015 18:18Нет, это не одно и то же.
Certificate pinning — это привязка к конкретному сертификату без проверки иерархии, или проверка всего одного уровня иерархии.
В данном же случае иерархия проверяется полностью, просто корневого сертификата нет в списке доверенных.

DanXai
13.10.2015 11:02На днях была аналогичная проблема в Хроме. Выяснилось, что Хрм не доверяет сертификату от Comodo.

GebekovAS
14.10.2015 09:33В свое время использовал сертификат от Comodo только потому, что на моем телефоне (Android) ему было доверие (поднимал Lync для демонстрации клиенту). Если не ошибаюсь, они еще тогда в архиве помимо моих сертификатов отправляли сертификат центра и вроде тоже приходилось вручную помещал его в хранилище доверительных центров на машинах с Windows 7. Думаю в поздних версиях (Windows 8 и 10) они уже включены.
ComodoHacker
13.10.2015 17:06Еще один сайт для проверки наличия подмененных корневых сертификатов: https://superfish.tlsfun.de/


Valdei
Получается, хром на такую подмену не реагировал, левый сертификат обнаружился только при переходе на FFox?
Тормоза — это, конечно, заметно, но как-то недостаточно информативно.
Кстати, а в трудовом договоре у вас есть пункт про возможность сбора информации о деятельности сотрудника?
RazorBlade
Chrome, скорее всего не среагировал, т.к. в организации внедрили в ОС свой сертификат на рабочие компьютеры, например групповыми политиками. А FF не смотрит на сертификаты ОС, а использует свою базу.
GebekovAS
Вот, что видит хром если включить службу:


… а вот, что видит если отключить:
Нет, в трудовом такой пометки нет=)
blind_oracle
Хром использует системное хранилище сертификатов, лиса — своё.
Свой сертификат Staffcop Agent добавляет в систему в доверенные при установке.
farcaller
Но в хроме же по идее SSL Pinning на сертификаты сайтов Google и он все равно не должен дать зайти на google.com с чужим сертификатом:
blind_oracle
В идеале, конечно, именно так. Они много где об этом пишут.

Но на деле, по крайней мере в enterprise версии Хрома (которая из MSI ставится), картина такая:
То есть, Хром без проблем жуёт сертификат для google.com, который сгенерировал прокси-сервер.
lexore
blind_oracle
Почитав Security FAQ наткнулся на такое:
То есть, если корневой сертификат в цепочке доверия — частный (то бишь не поставлялся с ОС, а был добавлен вручную), то Certificate Pinning отключается.