Можно ли иметь SSL-сертификат для IP-адреса, а не для доменного имени?

282

Я хочу , чтобы мой сайт , чтобы использовать URL , как http://192.0.2.2/...и https://192.0.2.2/...для статического контента , чтобы избежать ненужных куки в запросе и избежать дополнительного запроса DNS.

Есть ли способ получить сертификат SSL для этой цели?

Evgenyt
источник
3
Этот вопрос может представлять интерес: вы можете, но IP-адрес должен быть в записи SAN типа IP-адреса, а не в CN предметного DN.
Бруно
14
LetsEncrypt не делает этого. "" "" xxxx - это IP-адрес. Центр сертификации Let's Encrypt не будет выдавать сертификаты для
чистого
1
C / A Browser Forum предоставляет один набор политик выдачи. Очевидно, что за ним следуют браузеры. CA / B больше не позволяет IP-адреса. Другой набор политик выпуска поддерживается IETF. PKI IETF называется PKIX. PKIX позволяет IP-адреса. За PKIX следует большинство [бесплатных?] Программ, таких как cURL и Wget. Я не могу понять сертификат для 1.1.1.1 . Это должно быть запрещено в соответствии с правилами CA / B. Возможно, CA / B изменили свою политику.
jww

Ответы:

170

Согласно этому ответу , это возможно, но редко используется.

Что касается того, как его получить: я хотел бы просто попытаться заказать его у выбранного вами поставщика и ввести IP-адрес вместо домена во время процесса заказа.

Тем не менее, запуск сайта на IP-адресе, чтобы избежать поиска DNS, звучит ужасно как ненужная микрооптимизация для меня. В лучшем случае вы сэкономите несколько миллисекунд, и это за посещение , поскольку результаты DNS кэшируются на нескольких уровнях.

Я не думаю, что ваша идея имеет смысл с точки зрения оптимизации.

Пекка
источник
9
AFAIK, 1 раз в минуту (кэш Firefox DNS) и 1 раз в 30 минут для IE. Это отличается от TTL DNS-записей. Кроме того, для меня это занимает около 20 мс, в зависимости от домена и от того, насколько быстры серверы NS (которые также должны быть разрешены в первую очередь :)). Я также хочу избегать моих длинных куки (мои аутентификации + куки Google Analytics) для каждого статического запроса. Поэтому лучше использовать IP вместо покупки отдельного домена. Кстати, stackoverflow, basecamphq используют отдельный домен для статического контента. Использование IP вместо этого также удалит ненужные DNS-запросы.
Евгений
12
Я абсолютно понимаю вашу точку зрения с куки, вы совершенно правы. Но переключение на SSL IP для экономии нескольких мс поиска DNS звучит для меня более хлопотно, чем оно того стоит. Кроме того, у вас могут возникнуть проблемы с передачей вашего IP-адреса, если вам когда-либо придется сменить поставщика - это, вероятно, невозможно. Перемещение домена намного проще, и с ним можно легко перемещать сертификат.
Пекка
2
Инструмент Google Page Speed ​​всегда предлагает «обслуживать следующие ресурсы JavaScript с того же хоста, что и основной документ (xxxx.com), или по возможности отложить загрузку этих ресурсов». Я не оцениваю инструмент Page Speed ​​как библию, но в любом случае это означает, что я не придумал оптимизацию DNS. Я просто пытаюсь сделать мой контрольный список Page Speed ​​зеленым, где это возможно.
Евгений
11
@ Evgenyt: Я не думаю, что это из-за поиска в DNS, который, как указано, кэшируется на многих уровнях, что не может быть проблемой производительности. Скорее всего, это позволит браузерам направлять свои запросы. Сохраняя соединение с хостом открытым, тем самым избегая настройки дополнительных соединений.
vdstw
5
Я согласен с ответом. Также мы обнаружили проблему с такой конфигурацией. Оказалось, что браузер Chrome (39.0.2171.93) на ОС Android (4.4,5.0; работает на 4.0,4) не воспроизводит аудиофайлы через HTTPS, если в качестве цели сертификата используется IP-адрес. Мы использовали такую ​​конфигурацию для нашей тестовой среды, но начнем использовать доменные имена.
ENargit
58

Краткий ответ - да, если это публичный IP-адрес.

Выдача сертификатов на зарезервированные IP-адреса не допускается, и все сертификаты, ранее выданные на зарезервированные IP-адреса, были отозваны с 1 октября 2016 года.

По данным CA Browser форума, могут возникнуть проблемы совместимости с сертификатами для IP - адресов , если IP - адрес не находится в обоих commonNameи subjectAltNameполей. Это происходит из-за устаревших реализаций SSL, которые не соответствуют RFC 5280, в частности, ОС Windows до Windows 10.


Источники:

  1. Руководство по IP-адресам в сертификатах CA Browser Forum
  2. Базовые требования 1.4.1 CA Browser Forum
  3. (Скоро будет) не очень общее имя unmitigatedrisk.com
  4. RFC 5280 IETF

Примечание. В более ранней версии этого ответа говорилось, что все сертификаты IP-адресов будут аннулированы 1 октября 2016 года. Спасибо Navin за указание на ошибку.

regdoug
источник
5
Не соответствует действительности, globalsign по-прежнему выдает сертификаты для IP-адресов. Центр сертификации / браузерный форум не любит видеть частные IP-адреса в сертификатах, но не имеет ничего общего с публичными IP-адресами.
Навин
1
Похоже, моя информация устарела. Я посмотрю на это больше, а затем отредактирую, если вы правы.
Regdoug
Неверно, посмотрите на 1.1.1.1. Они получают сертификат SSL для ip в 2019 году и действительны до 2021 года от DigiCert
бронзовый мужчина
@bronzeman, который является публичным IP-адресом, так что да, вы можете получить сертификат для него. Единственные адреса, которые не могут быть выданы, это en.wikipedia.org/wiki/Reserved_IP_addresses
regdoug
@DustWolf, согласно RFC 5280, «Когда расширение subjectAltName содержит iPAddress, адрес ДОЛЖЕН храниться в строке октетов в« порядке байтов сети », как указано в [RFC791]. ... Для IP версии 4 ..., строка октетов ДОЛЖНА содержать ровно четыре октета. " Короче говоря, вы не можете использовать подсеть в поле
subjectAltName
31

Ответ, наверное, да. Проверьте эту ссылку, например.

Выдача SSL-сертификата на публичный IP-адрес

Сертификат SSL обычно выдается на полное доменное имя (FQDN), такое как « https://www.domain.com ». Однако некоторым организациям требуется сертификат SSL, выданный на общедоступный IP-адрес. Эта опция позволяет вам указать публичный IP-адрес в качестве общего имени в вашем запросе на подпись сертификата (CSR). Выданный сертификат может затем использоваться для защиты соединений напрямую с общедоступным IP-адресом (например, https://123.456.78.99 .).

Клаус Бысков Педерсен
источник
5
Это работает также со статическим частным IP? Как для локальной сети?
Мистер Бонжур
@Klaus Byskov Pedersen Не могли бы вы предоставить мне ресурс, как это сделать?
Рейхане
2
@ShivSingh Любой источник? Я не думаю, что какой-либо известный CA выдаст сертификат на частный IP-адрес.
Франклин Ю.
22

Ага. Cloudflare использует его для своей домашней страницы инструкций DNS: https://1.1.1.1

mehulmpt
источник
8
Это не совсем то, что кажется. Если вы проверяете сертификат, Common Nameполе будет cloudflare-dns.comи 1.1.1.1только указано в Certificate Subject Alt Name.
битинер
3
@bitinerant Общее имя будет игнорироваться, если присутствует альтернативное имя субъекта . На самом деле, общее имя устарело, и только SAN действительно имеет значение.
Йогу
3

Форум C / A Browser устанавливает, что является и не является действительным в сертификате, и что CA должен отклонить.

В соответствии с документом « Базовые требования к выдаче и управлению публично доверенными сертификатами» , С 2015 года ЦС не должны выдавать сертификаты, в которых поля общего имени или общих альтернативных имен содержат зарезервированный IP-адрес или внутреннее имя, где зарезервированные IP-адреса являются IP-адресами. что IANA перечислила как зарезервированное - которое включает в себя все IP-адреса NAT - а внутренние имена - это любые имена, которые не разрешаются в общедоступном DNS.

Общедоступные IP-адреса МОГУТ быть использованы (и документ базовых требований определяет, какие виды проверок должен выполнять ЦС, чтобы убедиться, что заявителю принадлежит IP).

Крис Бекке
источник
0

Это полностью зависит от центра сертификации, который выдал сертификат.

Что касается Let's Encrypt CA, они не будут выдавать сертификат TLS на общедоступный IP-адрес. https://community.letsencrypt.org/t/certificate-for-public-ip-without-domain-name/6082

Чтобы узнать свой центр сертификации, вы можете выполнить следующую команду и найти запись, помеченную ниже.

curl -v -u <username>:<password> "https://IPaddress/.."

введите описание изображения здесь

Шахид Хуссейн
источник