Comments 146
За статью спасибо =)
Чтобы корневой CA домена выпускал сертификаты для своего домена, которым бы сразу доверяли все?
Если я правильно понял вы хотите самостоятельно выпустить корневой сертификат и использовать его?
Если так, то использовать его вы сможете разве что у себя внутри организации, у тех пользователей, кто самостоятельно подгрузит его в браузер.
А вообще корневые сертификаты выпускают только существующие центры сертификации. И эти сертификаты, как правило уже есть в большинстве самых популярных браузеров.
Список центров сертификации можно посмотреть, например здесь: www.dmoz.org/Computers/Security/Public_Key_Infrastructure/PKIX/Tools_and_Services/Third_Party_Certificate_Authorities/
— самый простой стать реселлеров одного из уже существующих центров сертификации или их реселлеров. Благо у большинства есть и отличный API и White Label. При чем зачастую работать с партнерами центров сертификации дешевле, чем напрямую.
— стать самому центров сертификации. Тут нужна инфрастуктура, большие финансовые вложения. Нужно договориться, чтобы ваши корневые сертификаты были на разных браузерах, ОС и устройствах, на это уйдет не один год и только после этого вы сможете продавать свои сертификаты. К примеру та же Microsoft не допустит ваши сертификаты на свои платформы пока вы не пройдете WebTrust audit, что тоже стоит немалых денег.
Про аудит можете почитать тут: www.webtrust.org/item64428.aspx
В общем думаю без средств в несколько миллинов $ можно даже не пытаться.
Получается, что пользовательский сертификат, подписанный публичным центром сертификации, не получится использовать, например, для авторизации по смарт-карте. Так же не будет возможности архивировать закрытые ключи.
На моей практике была установка издающего ЦС, подписанного публичным ЦС (Baltimore Root CA). Потом мы очень намучались с архивацией ключей и смарт-картами.
Вывод: корпоративный ЦС должен иметь собственный корневой сертификат.
Если же речь идет о доверии к сертификату домена со стороны клиентов домена, то это происходит автоматически, так как сертификат помещается в контейнер Default Configuration Context->Services->Public Key Services->Certification Authorities и потом оттуда копируется (при очередном gpupdate) в локальное хранилище сертификатов всем клиентам домена.
почитайте технет на эту тему.
Внутри домена Вам больше ничего не надо, т.к корневые сертификаты и почтовые сертификаты пользователя можно публиковать в СА, после чего любой пользоатель домена может подписывать и шифровать переписку между собой.
Причем есть вариант даже работы с шифрованием и подписью сообщений через owa с недоменных ПК при авторизации на OWA
На практике проще и правильнее получить сертификат на сервер OWA/ActiveSync у внешнего CA, или прописать собственный сертификат всем клиентам.
«Также можете для тестов использовать бесплатные сертификаты: StartSSL™ Free»
Кстати на том же сайте можно посмотреть отличие такого бесплатного сертификата от остальных: www.startssl.com/?app=40
Ну и цена вроде бы то же не кусается.
Абсолютно нормальные сертификаты. Засада там в другом совсем — для коммерческого использования сертификаты уже платные, но для своих доменов — бесплатно и вполне себе работает (все современные браузеры на всех платформах давно их знают)
Никаких «для тестов», если генерить их на коммерческий домен (не принадлежащий частному лицу и / или используемый для бизнеса) — его или вообще не сгенерят или просто запретят потом.
Для некоммерческого использования и правда хороший вариант, но в большинстве случаев защищать передаваемую информацию требуется именно на сайтах так или иначе связанных с коммерцией.
promo code — SUPER10OFF
простой сертификат на 1 год — $16.16
Если мне не изменяет память, то он даже single root
Если нужен такой сертификат — напишите в личку — сделаем для вас индивидуальную скидку на этот сертификат.
Промо коды
CHEAP@Rapid1yr95 — $9.5
CHEAP@Rapid2yr9 — $18
CHEAP@Rapid3yr85 — $25.5
CHEAP@Rapid4yr8 — $32
Сертификат root всегда есть в браузере. Промежуточных может не быть.
Если они есть, то это single root — вашему браузеру для проверки конечного сертификата нужен только сам конечный сертификат, остальное у него уже есть.
Если их нет — браузеру придётся их где-то подгрузить, руководтствуясь записями в final и т. д. по цепочке вверх — там обычно пишут, «где найти ЦС». Но в состоянии «оффлайн, инета нет, нужно просто проверить подпись файла» это невозможно.
Конечно с такой ценой мы почти ничего не зарабатываем, но сейчас больше интересна лояльность клиентов. С сертификатами работаем давно, в основном работаем с банками и компаниями сферы телекома, теперь вот хотим и для физ. лиц сделать интересное предложение.
Если интересна партнерка по этим сертификатам — тожем можем предложить вкусные условия
Другими словами, есть ли способ отличить сертификат, сгенерированный makecert, от сертификата, сделанного тем же openssl?
Закрытый ключ != сертификат.
Более того, сертификат — штука полностью публичная, он никаким образом не содержит закрытый ключ, даже зашифрованный. Но он содержит электронную подпись, выполненную с помощью закрытого ключа ЦС, выдавшего сертификат.
Кстати говоря, CSR тоже не эквивалентно открытому ключу. И называется он поэтому не так — не «открытый ключ», не «public key», а «запрос подписи сертификата», «certificate signing request». Там, помимо ключа, ещё и дополнительные данные, которые хотелось бы к нему «приделать» и чтобы подпись сертификата (собственно центра сертификации) удостоверяла и их тоже.
Это очень важный вопрос. Именно эти «дополнительные данные» и содержат, например, dns-имя сервера, которое требуется подтвердить сертификатом.
Это:
— полное (уникальное) имя владельца сертификата
— открытый ключ владельца
— дата выдачи ssl сертификата
— дата окончания сертификата
— полное (уникальное) имя центра сертификации
— цифровая подпись издателя
Добавлю эту информацию в статью.
Для клиентских сертификатов предпочтительно использовать только CDP, для серверных желательно добавить AIA OCSP.
Разработка профиля сертификата под конкретную задачу является высокоспециализированной задачей и обычно проходит отдельным пунктом в договоре :-)
Похоже я немного в сторону ушел, все-таки статья про серверные SSL сертификаты. Однако best-practices на них тоже распространяются.
После таких слов я бы подумал хорошенько, прежде чем заказывать сертификаты у вас.
Случаи, когда клиент отменял сертификат были, но почти во всех случаях это было из-за неправильно заполненных данных и необходимости оформить заказа заново, либо из-за неверно выбранного типа сертификата.
Надо было просто написать, что да, все наши сертификаты имеют CDP, что CRL всегда актуальный и что есть услуга отзыва сертификата по инициативе клиента или по решению офицера по безопасности. И что все отлажено и все под контролем. :-)
openssl.exe
Так рассуждая, приходим к тому, что, скажем условный Verisign должен много денег разработчикам lynx.
1а. А теперь я не производитель браузера, но разрабатываю дистрибутив Linux. В моём репозитарии в пакете с этим браузером сертификат Verisign отсутствует. Ну и далее — по тексту выше.
2. Вот браузер, в нём встроены сертификаты ЦС. Что мешает держателю очередного сайта с софтом, типа all-new-soft.ru, перепаковать дистрибутив, добавив туда в список доверенных какой-нибудь свой ЦС? Или же при запросе на скачивание использовать уязвимость HTTP к подделке и подсунуть другой файл с дистрибутивом. Ведь все браузеры, как правило, скачиваются по HTTP, без проверки подлинности источника.
Всё, теперь я — ЦС, и могу продавать сертификаты. Более того, я могу продать сертификат, например, для сайта microsoft.com, и браузер будет рассматривать его как доверенный, а поддельный сайт microsoft.com — как подлинный.
Из всего этого я могу сделать ровно один неутешительный вывод: вся эта продажа сертификатов — чистой воды торговля воздухом. Действительно доверять можно только тем ЦС, которые ты установил в бразуер сам.
1. С какой стати я, производитель браузера, обязан включать все эти ЦС в свой дистрибутив?
2. Почему это я, производитель бразуера, не могу включить любой другой ЦС в свой дистрибутив?
1. Очевидно существует некоторая договоренность между центрами сертификации и производителями браузеров и есть вероятность, что производители браузеров получают с этого некоторые отчисления.
С другой стороны если в браузере не будет не одного корневного сертификата пользователь такого браузера увидит ошибку на множестве сайтов, которые до этого ошибки не выдавали и скорей всего перестанет использовать такой браузер.
Так что есть свой интерес и у производителей браузеров.
2. Можете.
Как в этой всей схеме PKI учитывается такой вариант?
К тому же у крупных организаций почти у всех стоит если не EV сертификат, то как минимум сертификат с валидацией организации. А если центр сертификации выдаст такой сертификат фейковой организации, то он с большой вероятностью лишиться своей аккредитации и права выдавать сертификаты.
Для выявления нужно анализировать конкретный дистрибутив, причём очень внимательно. Дело в том, что я могу даже сделать свой ЦС и заполнить поля в нём такими же значениями, как у Verisign. Отличить от настоящего можно только позвонил в Verisign и сверив отпечатки ключа, больше никак.
А сертификатов предустановлено порядка сотни. Представляете себе проверку каждого дистрибутива для каждого релиза?
Так сложно затем, что потом это сложно заметить.
2. Можете. Получите по голове от аналитиков и тех, кто проверяет безопасность.
Кроме того, вы можете сделать в своём бразуере backdoor или сливать всю информацию о пользователях. Это гораздо более эффективный путь.
И злоумышленник тоже может так сделать — он тоже подсунет пользователю свой файерфокс, со своим встроенным ЦС.
Повторюсь, пока браузеры у нас скачивают по HTTP и подписи никакие никто не проверяет — дистрибутив можно подделать, и вся, вся схема с «предустановленными в браузере сертификатами» ненадёжна и порочна.
По поводу яндекса: он не будет добавлять свой УЦ в свою же сборку firefox`a по очень простой причине: это бессмысленно, потому как сертификаты яндекса будут работать только под его сборками, а соответственно все остальные посетители, использующие другие браузеры, будут получать предупреждение о не валидном сертификате. Яндексу это не надо.
На мой взгляд, вы сгущаете краски. Сертификаты работают вот уже много лет и это говорит о том, что их надежность вполне достаточна для абсолютного большинства пользователей.
Месяца два-три назад тут обсуждалась конкретная атака, реализованная таким способом (подделкой инсталлятора, переданного жертве с использованием ARP spoofing). Там поставили трояна на комп жертвы, а могли засандалить сертификат — его и обнаружить гораздо сложнее, чем троян. И потом можно тем же способом перехватить взаимодействие жертвы с искомым ресурсом.
Да и к тому же особенность направленной атаки — это ее заточка под жертву, здесь и меры предосторожности должны быть совершенно другого уровня. Серебряной пули не существует, комплексная защита рулит ;-)
Вопрос в подписывании не кода, а самого пакета. В линуксах эта проблема давно решена — всё ставится из репозитариев, где опять же всё подписано; в винде решения пока что нет — для установки браузера качаем инсталлятор по http, а потом при установке, даже если система спросит «доверять ли этому издателю», нажмём «всё равно установить».
Иными словами — это просто маркетинговая лапша
При выдаче простого (не-EV) сертификата проверяется только то, что почту в домене может прочитать запросивший сертификат клиент, какие там требования — пустая формальность.
Сертификаты пытаются выдать за доверие, а это давно уже простое шифрование транспортного уровня. Попыткой это изменить стали EV-сертификаты. Да, зелененькой полоске доверия больше, чем серенькому замочку.
Например rapidssl и у его же реселлеров: $50 и $10, или вот те же $10 и $150 у Thawte.
Если одно и то же кто-то продает в 15 раз дешевле, то он явно продает воздух.
Специально посмотрел спецификации: никаких стандартных полей типа «уровня доверия» и «тщательности проверки» в сертификатах нет, т.е. схема PKI не рассматривает такие вопросы.
Эти сертификаты не различаются ничем, кроме поля «issuer». Браузеру же это поле неинтересно, он его никак не анализирует, т.е. с точки зрения браузера — вообще ничем не отличаются. И работают одинаково.
Неискушённого пользователя элементарно просто обмануть и вызвать в нём ложное чувство безопасности — ведь SSL же и сертификат доверенный, какая там разница, кем он выдан?
У нас были клиенты, которые готовы были переплачивать за сертификаты от Verisign, хотя мы им разъяснили, что принципальных отличий от более дешевых сертификатов у них нет.
Браузеры (по крайней мере, Fx) его обрабатывают. Т.е. браузер отличает сертификат Thawte EV от других валидных сертификатов.
Разумеется, ни один уважающий себя ЦС мне сертификат с таким полем не захочет выдавать (если только это не Thawte и он не произвёл EV, разумеется). Но опять же, любой не уважающий себя ЦС вполне (технически) способен это сделать, т.е. я могу сам себе сделать ЦС и выдать как бы Thawte EV-сертификат.
2) покупается не столько продукт (сертефикат), сколько поддержка (у траста она будет одна, у ресселера совсем другая, или просто будет отсутствовать)
Для корпоративных в основном www.rapidssl.com/
А разве SNI (Server Name Indication) не снимает это ограничение?
Поддерживается всеми новыми браузерами, начиная с версий:
Opera 8.0;
MSIE 7.0 (но только на Windows Vista и выше);
Firefox 2.0 и другие браузеры, использующие Mozilla Platform rv:1.8.1;
Safari 3.2.1 (Windows-версия поддерживает SNI только на Vista и выше);
и Chrome (Windows-версия также поддерживает SNI только на Vista и выше).
Но далеко не все знают про эту опцию и используют ее, в большинстве случаев клиенты используют SSL вместе с выделенным IP.
Вы некомпетентны.
Во-первых, поддержка SNI никакого отношения к PHP не имеет. Веб-сервер может и вообще не знать про PHP, а SNI он будет уметь.
Это в Apache принято встраивать PHP при помощи SAPI-модуля — тут да, сервер как бы «сам умеет» выполнять php-скрипты с помощью плагина. А вот nginx с PHP не знаком — интерпретатор не встроен в сервер, он связывается с интепретатором по стандартному протоколу, которым может быть CGI, FastCGI, UWSGI.
А SNI умеет как Apache, так и nginx (и оба — потому, что его умеет бибиотека OpenSSL).
Во-вторых, то, что про SNI кто-то там не знает, не значит, что он не будет работать и что его невозможно настроить.
Правда точно также и большинство клиентов не знает про SNI, я уточню про эту опцию на наших серверах и возможно мы отдельно добавим информацию про такую возможность в базу знаний.
Спасибо за полезную подсказку…
Кстати говоря, что касается покупки и использования сертификатов — абсолютно всё, что применимо к HTTP, применимо и к ним тоже. Т. е. для IMAP over TLS на своём сервере потребуется купить сертификат. И можно настроить проверку клиентских сертификатов, и даже аутентифицировать пользователей по ним — по Subject DN в клиентском сертификате, а не по логину-паролю, как это делается традиционно.
— системный OpenSSL может оказаться старой версии (ниже 1.0.1)
— сам nginx версии ниже 1.1.13 и 1.0.12
— TLSv1.1/1.2 могут быть не включены в директиве ssl_protocols
А так да, вполне себе работает
Однако, попробовать это самому ни разу не довелось, в нашей стране TPM нелегален.
Выпустить сертификат — это как раз да, то, что я от них и жду. Но «разрешать мне использовать SSL» — это не совсем в их власти и функциях. Я SSL могу использовать, когда захочу (если настрою, конечно), разница только в том, кто создаст сертификат.
Спасибо!
Еще один момент забыл упомянуть в статье. Если обычный сертификат заказать для www.domainname.com то такой сертификат будет работать и на domainname.com, а вот наоборот работать не будет.
Поддержка этой опции: защита домена с www и без www есть не у всех сертификатов, работает эта опция у следующих сертификатов:
• RapidSSL
• QuickSSL Premium
• True BusinessID
• True BusinessID with EV
Это вовсе не всегда так, а только если в сертификате прописаны subject alt name (ну то есть, сертификат выдан «для нескольких доменов сразу»). Некоторые делают так «по умолчанию», если основное subject cname начинается с www, но это необязательно.
А вообще так можно сделать и для любых других имён. Прописываем пять разных subject alt name, и для всех шести (основной + пять альтов) наш сертификат работает. Правда, как и SNI, это поддерживается не всеми. Например, вот сообщение, что это не поддерживалось в Андроиде (не знаю, починили ли).
SAN — один из способов. Другой — wildcard.
Других способов нет ;) если ваш сертификат поддерживает несколько имён (случай «с www и без www в том числе), значит, он сделан одним из этих способов.
В любом случае, даже если этот канал очень надежный, я считаю такой закрытый ключ скомпрометированным, поскольку он был доступен вышим сотрудникам
Естественно если это происходит на обычном виртуальном, то у администраторов с root доступом к серверу есть доступ и к ключам, которые там хранятся.
Вы ведь, когда свои сайты храните на хостинге, тоже доверяете какому-то хостеру все свои файлы и данные и осознаете при этом, что часть сотрудников хостера имеет полный доступ к данным на сервере.
Например, у startssl free это сделано в браузере, посредством javascript, т.е. приватный ключ генерируется прямо в браузере на стороне клиента, и никуда из него не пересылается.
Хотя при желании вы можете сгенерировать сертификат и у себя на компьютере.
Приватный ключ — не создается на нашей системе, за исключением случаев, когда клиент покупает у нас виртуальный хостинг и генерирует сертификат через панель управления хостингом.
интересно, есть какие-нибудь библиотеки, или они самостоятельно реализовывали md5, sha1, rsa и т. п. Кстати, и генератор ПСЧ еще нужен, интересно его проверить на уязвимости.
Почему SSL считается менее безопасным?
SSL не безопасен в связи с тем что он уязвим к атакам BEAST и POODLE, эти уязвимости невозможно починить только с серверной стороны.
p.s. для вопросов есть toster
С момента выхода статьи прошло уже много время. Может имеет смысл подновить информацию в свете новых реалий и возможностей возникших в течении этого периода? Например, о новых возможностях в плане бесплатной регистрации и её автоматического продления, новых версий протоколов TLS итп
Ваш сервер автоматически сопоставит выпущенный сертификат, со сгенерированным приватным ключем.
Что за приватный ключ, откуда его брать? На reg.ru для полученного сертификата предоставляются следующие файлы (приватного ключа среди них не вижу):

Без ключа сертификат в принципе невозможно было сгенерировать. Подозреваю, что либо вы его сами загружали в процессе заказа и не обратили на это внимание, либо reg.ru где-то в процессе заказа сгенерировал ключ для вас и просил его сохранить.
Цифровые SSL сертификаты. Разновидности, как выбрать?