2011-08-25 4 views
5

Ok Продвинутые SSL-галы и парни - я добавлю щедрость к этому после двухдневного периода, поскольку я считаю, что это сложный вопрос, который заслуживает вознаграждения для всех, кто вдумчиво ответы.Продвинутый SSL: Промежуточный центр сертификации и развертывание встроенных ящиков

Некоторые из предположений здесь просто таковы: предположения или, точнее, обнадеживающие предположения. Подумайте, это мозг-тизер, просто говоря: «Это невозможно», не хватает смысла.

Альтернативные и частичные решения приветствуются, личный опыт, если вы сделали что-то «похожее». Я хочу кое-чему научиться, даже если весь мой план испорчен.

Вот сценарий:

Я разрабатываю на встроенной системе Linux и хочет его веб-сервер, чтобы иметь возможность обслуживать вне коробки, не беспроблемное SSL. Вот критерии дизайна я и добиваюсь:

должны имущих:

  • Я не могу пользователь добавить свой доморощенный сертификат CA в браузере
  • Я не могу иметь пользователя добавьте статически сгенерированный (по времени mfg) самозаверяющий сертификат к своему обозревателю
  • Я не могу заставить пользователя добавить динамически сгенерированный (при загрузке) самозаверяющий сертификат в свой браузер.
  • Я не могу по умолчанию использовать HTTP и включить/отключить toggle для SSL. Это должен быть SSL.
  • Как встроенный ящик, так и клиент веб-браузера могут иметь или не иметь доступа в Интернет, поэтому следует полагать, что он функционирует правильно без доступа в Интернет. Единственные корневые ЦС, на которые мы можем положиться, - это те, которые поставляются с операционной системой или браузером. Давайте сделаем вид, что этот список «в основном» одинаковый в браузерах и операционных системах, то есть мы будем иметь коэффициент успешности ~ 90%, если мы будем полагаться на них.
  • Я не могу использовать операцию «по ночам», т. Е. «Клиентай по SSL-сертификату Fast Eddie - при низких ценах наши серверы ДОЛЖНЫ быть взломаны! '

Приятно имущие:

  • Я не хочу, чтобы пользователь предупредил, что имя хоста сертификата не соответствует имени хоста в браузере. Я считаю это приятным, потому что это невозможно.

Не хочет:

  • Я не хочу, чтобы отправить один и тот же набор статических ключей для каждой коробки. Вид подразумевается списком «не могу», но я знаю риск.

Да, я знаю ..

  • я могу и есть механизм для пользователя, чтобы загрузить свои собственные CERT/ключ, но я считаю это «расширенный режим» и выходит за рамки этого вопроса. Если пользователь достаточно продвинутый, чтобы иметь собственный внутренний ЦС или ключи от продажи, тогда они потрясающие, и я их люблю.

Thinking Cap Время

Мой опыт работы с SSL было генерируя CERT/ключи должны быть подписаны «реальным» корнем, а также активизируют свою игру немного с сделать мой собственный внутренний центр сертификации , распространяя внутренние «самозаверяющие» сертификаты. Я знаю, что вы можете связывать сертификаты, но я не уверен, что такое порядок операций. Т.е. браузер просматривает цепочку, видит действительный корневой центр сертификации и видит это как действительный сертификат, или вам нужно иметь проверку на каждом уровне?

Я столкнулся с описанием intermediate certificate authority, которое заставило меня задуматься о потенциальных решениях. Я, возможно, пошел от «простого решения» на «режим кошмара», но это было бы возможно:

Сумасшедшая Идея № 1

  • Получить промежуточный сертификат центра сертификации, подписанный «реальным 'CA. (ICA-1)
    • ROOT_CA -> ICA-1
  • Этот сертификат будет использоваться во время производства для создания уникальных беспарольной суб-промежуточной пар полномочий сертификата в коробку.
    • ICA-1 -> ICA-2
  • Использование ICA-2 для создания уникального сервера CERT/ключ. Здесь предостережение: можете ли вы создать ключ/пару для IP-адреса (а не DNS-имя?)? то есть потенциальный прецедент для этого будет заключаться в том, что пользователь сначала подключается к ящику через http, а затем перенаправляет клиент на службу SSL с использованием IP-адреса в URL-адресе перенаправления (чтобы браузер не жаловался на несоответствия). Это может быть карта, которая сводит дом вниз. Поскольку соединение SSL должно быть установлено до того, как могут произойти какие-либо переадресации, я вижу, что это также проблема. Но если это все работает магически
  • Могу ли я использовать ICA-2 для генерации новых пар cert/key каждый раз, когда ящик меняет IP, так что когда веб-сервер возвращается, у него всегда есть «действительная» цепочка ключей.
    • ICA-2 -> SP-1

Хорошо, ты такой умный

Скорее всего, мой извилистый решение не будет работать - но это было бы здорово, если бы это было так. У вас была аналогичная проблема? Что ты сделал? Каковы были компромиссы?

+1

Может быть, вы все еще можете использовать простой HTTP для загрузки частного корневого ЦС или сервера самозаверяющего сертификата в браузер пользователя? Это можно сделать как «один клик» (нормально, а не один, но очень простой) процесс во время установки сервера. Действительно ли «нет HTTP, нет установки cert» действительно ДОЛЖЕН иметь? – blaze

+1

К сожалению, «must haves» основаны на отрицательных ответах о текущем решении о необходимости клика с самозаверяющим сертификатом. Но, поговорив с несколькими нашими адвокатами наших клиентов, это, по-видимому, так же плохо, как стрелять в собаку клиента. Это боль в заднице, и это не помогло растущему коварно-старому взгляду Firefox в отношении самозаверяющих сертификатов. То, что я снимаю для звезд, должно быть лучше. auth_digest не решает его, SRP-TLS приближается к некоторым аспектам, но по-прежнему остается кровоточащим с точки зрения поддержки. – synthesizerpatel

ответ

6

В принципе, нет, вы не можете сделать это так, как вы надеетесь.

Вы не являетесь промежуточным авторитетом SSL, и вы не можете позволить себе стать им. Даже если бы вы были, в аду вы не сможете распространять среди потребителей все необходимое для создания новых действительных сертификатов для любого домена, которому по умолчанию доверяют во всех браузерах. Если бы это было возможно, вся система рухнула бы вниз (не то, что у нее еще нет проблем).

Вы не можете заставить государственные органы подписывать сертификаты, выданные на IP-адреса, хотя нет ничего технически, чтобы предотвратить это.

Имейте в виду, что если вы действительно распространяете секретные ключи во всех защищенных криптографических модулях, защищенных от несанкционированного доступа, ваши устройства на самом деле не защищены SSL. Любой, у кого есть одно из устройств, может вытащить закрытый ключ (особенно если он без пароля) и сделать действительные, подписанные, MITM-атаки на всех ваших устройствах. Вы препятствуете случайному подслушиванию, но об этом.

Ваш лучший вариант - это, вероятно, получить и подписать сертификаты для действительного интернет-субдомена, а затем заставить устройство отвечать за этот поддомен. Если это сетевое устройство на исходящем пути, вы, вероятно, можете сделать магию маршрутизации, чтобы заставить ее отвечать за домен, подобно тому, как работают системы с огороженными садами. У вас может быть что-то вроде «system432397652.example.com» для каждой системы, а затем сгенерировать ключ для каждого поля, соответствующего этому поддомену. Прямой IP-доступ перенаправляется в домен, и либо он перехватывает запрос, либо делает некоторые хитрости DNS в Интернете, чтобы домен разрешал правильный внутренний IP-адрес для каждого клиента. Для этого используйте одноцелевой домен хоста, не разделяйте его с другими бизнес-сайтами.

Уплата дополнительных сертификатов на самом деле не делает их более или менее законными. К тому времени, когда компания стала корневым центром сертификации, она далека от операции «по ночам». Вы должны проверить и посмотреть, подходит ли StartSSL для ваших нужд, так как они не взимают плату за каждый сертификат.

+0

Что касается вопроса «Только так же надежно, как и физическое оборудование», я соглашусь с тем, что согласен и понимаю этот аспект. Желание уникальных ключей состоит в том, чтобы избежать сценария, когда он является единственным действующим сертификатом/ключом, развернутым в каждом окне (что приводит к проблеме несоответствия хоста), так как после того, как вы получите приватный из одного окна, вы можете дешифровать каждое поле. Что касается промежуточных затрат на сертификацию - я несколько догадался, что так будет. Я бы хотел, чтобы EFF запустил некоммерческий CA. – synthesizerpatel

+0

Если вы ищете CA с низким уровнем затрат, вы хотите, чтобы StartSSL (я думал, что вы делаете копать в нем раньше с помощью материалов «fast eddie's ...», поэтому я не упоминал их). Их модель проверяет вас, а затем позволяет вам выпускать столько сертификатов, сколько вам нужно. Ваш вариант использования, вероятно, является границей для их терминов, но я думаю, что это на стороне ok линии. Может ли модель пользовательского поддомена работать в вашем случае использования? –

+1

Это мертво. Поскольку нет технического решения, вам придется обрабатывать его в продажах или поддержке. Кто-то должен сказать клиенту, что параметры ssl так, что им предлагается получить не-самостоятельно подписанный сертификат. Черт, я уверен, что вы могли бы с кем-то сотрудничать, чтобы предложить его в приложении и взять кусок продажи в качестве реферала. – NotMe