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
Хорошо, ты такой умный
Скорее всего, мой извилистый решение не будет работать - но это было бы здорово, если бы это было так. У вас была аналогичная проблема? Что ты сделал? Каковы были компромиссы?
Может быть, вы все еще можете использовать простой HTTP для загрузки частного корневого ЦС или сервера самозаверяющего сертификата в браузер пользователя? Это можно сделать как «один клик» (нормально, а не один, но очень простой) процесс во время установки сервера. Действительно ли «нет HTTP, нет установки cert» действительно ДОЛЖЕН иметь? – blaze
К сожалению, «must haves» основаны на отрицательных ответах о текущем решении о необходимости клика с самозаверяющим сертификатом. Но, поговорив с несколькими нашими адвокатами наших клиентов, это, по-видимому, так же плохо, как стрелять в собаку клиента. Это боль в заднице, и это не помогло растущему коварно-старому взгляду Firefox в отношении самозаверяющих сертификатов. То, что я снимаю для звезд, должно быть лучше. auth_digest не решает его, SRP-TLS приближается к некоторым аспектам, но по-прежнему остается кровоточащим с точки зрения поддержки. – synthesizerpatel