SSL-сертификат для всех доменов - PullRequest
2 голосов
/ 27 ноября 2010

можно ли с помощью openssl генерировать сертификат для всех доменов? Мне не нужно подписывать его с CA, ни один CA никогда не сделает этого, если это возможно. Мне просто нужно это по определенной причине. Или есть ли способ сделать это?

Ответы [ 4 ]

1 голос
/ 02 марта 2016

можно ли с помощью openssl сгенерировать сертификат для всех доменов?

Зависит, но в основном да.Я называю это «Super Cert».

Я могу сказать только «в основном», потому что браузеры отвергнут методику ниже.Другие пользовательские агенты, платформы, библиотеки и даже операционные системы примут его.


Короче говоря, вы добавляете следующее к своему openssl.cnffile:

[ x509_ext ]
...
subjectAltName          = @alternate_names
...

[ alternate_names ]

DNS.1       = *.com
DNS.2       = www.*.com
DNS.3       = *.net
DNS.4       = www.*.net
DNS.5       = *.gov
DNS.6       = www.*.gov
DNS.7       = *.mil
DNS.8       = www.*.mil
...

Затем вы подаете один и тот же сертификат для каждого запроса.


Причина, по которой он работает, состоит в том ... Есть две группы, которые публикуют правила, которые большинствоПользовательские агенты следуют.Во-первых, это базовые требования CA / Browser Forum .Второй - IETF с RFC 5280 и RFC 6125 .Браузеры следуют CA / Browser Forum BR.Другие пользовательские агенты, такие как cURL и Wget, и фреймворки, такие как Java, Cocoa и .Net, следуют RFC.

И CA / B, и IETF имеют правила для сопоставления с подстановочными знаками, и это означает, что вы должны работатьпри создании Супер Сертификата.Вы не можете просто использовать *.com и *.*.com для всех случаев.

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


Теперь браузеры откажутся сопоставлятьимя типа *.com в сертификате.Его кодифицировано в Базовых требованиях и Глобальных доменах верхнего уровня (рДВУ), перечисленных в Общедоступном списке суффиксов (PSL) , используемом браузерами.

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

  • Python
  • Ruby
  • Java
  • .Net
  • Какао

Мне кажется, я помню, что PERL был единственным, кто получил его частично правильно, отклонив *.com и друзья.Однако, если я правильно помню, он принял www.*.com.

К другим пользовательским агентам, которым не удалось отклонить бессмысленные имена хостов, относятся:

  • wget
  • curl
  • gnutls
  • ...

Когда я подавал сообщения об ошибках, наиболее цитируемым ответом для его принятия был«... но RFC не запрещает это».

Я пытался получить рабочую группу PKIX (PKI в Интернете) и рабочую группу DBOUND (доменграницы) , чтобы отклонить их (или, по крайней мере, не рекомендовать их принимать), поскольку мы знаем, что не существует единой организации, которая выпускает сертификаты для всех .COM, всех .NET и т. Д. Также см. Некоторые работы, которые, вероятно, поразят dbound раньше, чем позже .


Джеймс Полк сказал следующее:

ЦС подпишет его, только если сможет подтвердить, что вы управляете этими доменами.Если конечно вы не можете обмануть CA.

Это в основном верно.Если вы используете свою собственную PKI, то вы создаете Super Cert, подписываете его внутренним CA, и все будет работать так, как ожидается, как Public CA подписал его.

Это предполагает, что вы установили внутренний сертификат CA какподходит, но это то, что вы делаете, когда запускаете свой собственный CA.

1 голос
/ 27 ноября 2010

Не совсем.Вы можете самостоятельно подписать сертификат с общим названием *.Очевидно, что, как подчеркнул Роберт, пользователи будут получать предупреждения, но на этот раз предупреждение касается того факта, что сертификат подписан неизвестным эмитентом.Просто дайте вашим пользователям принять его, возможно, через безопасный канал (например, отправьте им сообщение S / MIME или PGP с вашим сертификатом и открытым ключом), и предупреждения также будут отключены.

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

1 голос
/ 27 ноября 2010

Нет, нет способа создать сертификат, который соответствует всем доменам. И хотя вы можете сгенерировать сертификат, который соответствует нескольким доменам - нескольким, а не всем - ЦС подпишет его только в том случае, если сможет подтвердить, что вы контролируете эти домены. Если конечно вы не можете обмануть CA.

0 голосов
/ 27 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...