Поиск по сайту:

Мысли о промежуточной совместимости SSL с сертификатами Lets Encrypt


На этой странице

  1. Введение
  2. Настоящие сложности
  3. Предпосылки
  4. Вся идея
  5. Больше никакой теории
  6. Автостатистика
  7. Конфигурация HTTPS

Let’s Encrypt — это бесплатный, автоматизированный и открытый центр сертификации (ЦС), работающий на благо общества. Основные принципы Let’s Encrypt:

Ключевыми принципами Let’s Encrypt являются бесплатные: любой, у кого есть доменное имя, может использовать Let’s Encrypt для получения доверенного сертификата без каких-либо затрат.

  • Бесплатно: любой владелец доменного имени может использовать Let’s Encrypt для получения доверенного сертификата без каких-либо затрат.
  • Автоматически: программное обеспечение, работающее на веб-сервере, может взаимодействовать с Let’s Encrypt для безболезненного получения сертификата, безопасной настройки его для использования и автоматического обновления.
  • Безопасность: Let’s Encrypt будет служить платформой для совершенствования передовых методов обеспечения безопасности TLS как на стороне ЦС, так и путем оказания помощи операторам сайтов в надлежащей защите своих серверов.
  • Прозрачность: все выданные или отозванные сертификаты будут публично зарегистрированы и доступны для просмотра любым пользователем.
  • Открытый: протокол автоматической выдачи и продления будет опубликован как открытый стандарт, который смогут принять другие.
  • Совместная работа. Как и сами базовые интернет-протоколы, Let’s Encrypt — это совместная работа на благо сообщества, неподконтрольная какой-либо одной организации.
    (источник: https://letsencrypt.org/about/)

вступление

Во-первых, мы должны упомянуть о некоторых темных сторонах сервиса Lets Encrypt. Какой бы прекрасной ни была идея бесплатного общедоступного и открытого центра сертификации, она также приносит нам много неприятностей. Разработчики постарались сделать систему получения сертификатов максимально простой, но она все же требует более высокого навыка администрирования сервера. Поэтому многие разработчики, такие как ISPConfig (http://www.ispconfig.org/), внедрили это решение непосредственно в свои. Это позволяет людям более эффективно развертывать и контролировать всю систему, намного проще и гибче.

Настоящее осложнение

Многие люди решили внедрить Lets Encrypt на своих производственных сайтах. Я считаю, что это по-прежнему очень плохая идея, если не быть очень (но действительно очень) осторожным. Lets Encrypt дает вам свободу, но также ограничивает использование сертификата с шифрованием SHA-256 RSA. Поддержка SHA-256 улучшилась за последние несколько лет. Большинство браузеров, платформ, почтовых клиентов и мобильных устройств уже поддерживают SHA-256. Однако некоторые старые операционные системы, такие как Windows XP до SP3, не поддерживают шифрование SHA-256. Многие организации смогут перейти на SHA-256, не сталкиваясь с проблемами взаимодействия с пользователем, и многие могут захотеть поощрить пользователей, использующих старые, менее безопасные системы, к обновлению.

В этом руководстве мы собираемся решить эту несовместимость простым, но все же неприятным способом.

Предпосылки

  • Apache версии 2.4 и выше
  • OpenSSL версии 1.0.1e и выше
  • Apache mod_rewrite включен

Вся идея

Как упоминалось ранее, в Интернете все еще есть устройства, несовместимые с подписью SHA-256. Когда мне пришлось развернуть SSL на некоторых веб-сайтах, мне пришлось выбирать между двумя вариантами:

  1. Используйте Lets Encrypt бесплатно, но не для всех.
  2. Покупка сертификата со 128-битной подписью.

Ну пока варианта нет. 1 был единственным способом, как было обещано заказчику давным-давно (:Хватит теории:

Нет больше теории

Надеюсь, я объяснил необходимое, и теперь мы можем разобраться с неподдерживаемыми посетителями нашего сайта. Есть много людей, использующих машины с Windows XP с SP2 и ниже (да, их все еще много). Так что мы должны фильтровать этих людей.

В вашем \/etc/apache2/sites-available/your_domain.com.conf добавьте следующее в конец файла:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !(NT\ 5) [NC]
RewriteRule ^(.*) https:// your_domain.com [R]

RewriteCond получает строку из http-заголовка гостя, обращающегося к вашей странице. Вы можете просто проверить свой и найти дополнительную информацию здесь: http://www.useragentstring.com/

Условие, которое мы использовали, говорит нам что-то вроде «если строка не содержит NT 5», то RewriteRule выполняет/применяет правило перенаправления [R] на вариант https вашего домена, NT 5 — это строка версии ОС для устройств с Windows XP. Если вы не используйте это перенаправление, несовместимые пользователи не смогут получить доступ к вашему https-сайту.

Если вы не используете это перенаправление, несовместимые пользователи не смогут получить доступ к вашему веб-сайту https. Я должен предупредить вас о том, что это решение не на 100% идеально, как некоторые из

Я должен предупредить вас о том, что это решение не на 100% идеально, так как некоторые гости не должны предоставлять вам актуальную или реальную информацию. Я работал с AWstats, чтобы выяснить, какой процент неизвестных систем обращается к моей странице, и он составляет около 1,3%, так что запросов довольно мало. Если вы хотите иметь дело с неизвестными операционными системами для обеспечения их совместимости, вы также можете добавить неизвестное в условие (RewriteCond %{HTTP_USER_AGENT} !(NT\ 5|unknown) [NC]).

Австатс

После успешного «неперенаправления» ваших несовместимых посетителей (удерживая их в небезопасном мире http) вы можете сосредоточиться на стороне https.

HTTPS-конфигурация

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

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA 
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder On

Используемый здесь CipherSuite немного длиннее обычного. Это для лучшей совместимости. Вы можете получить свой собственный от:

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

После использования этих настроек вы можете проверить конфигурацию и совместимость вашего сервера по адресу:

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