Поставил сертификат Let’sEncrypt

11 комментариев

Установка сертификата от Let's EncyptВот наконец решил попробовать SSL сертификат от Let’s Encrypt. Сподвигло меня на это то что, купленный мной ранее сертификат от COMODO, на платформе Android оказывается считается недоверенным. А я ни сном ни духом об этом( Да и вобщем хрен с ним с тем сертификатом, стоил он всего 8$, и во первых не жалко, а во вторых, FireFox начал ругаться на то сертификат использует небезопасное шифрование 1024bit.

Вообще что такое Let’s Encrypt? Это центр сертификации который выдает бесплатные HTTPS сертификаты. Ну и немножко википедии:

Проект Let’s Encrypt создан для того, чтобы большая часть интернет-сайтов смогла перейти к шифрованным подключениям (HTTPS). В отличие от коммерческих центров сертификации, в данном проекте не требуется оплата, переконфигурация веб-серверов, использование электронной почты, обработка просроченных сертификатов, что делает процесс установки и настройки TLS-шифрования значительно более простым. Например, на типичном веб-сервере на базе Linux, требуется исполнить две команды, которые настроят HTTPS шифрование, получат и установят сертификат примерно за 20-30 секунд.

У сервиса есть несколько ограничений которые немного печалят, сертификат выдается сроком всего на 3 месяца, отсутствуют WildCard сертификаты. Первое ограничение объясняют тем что мол в случае компрометации, сертификат, выданный на 3 месяца, нанесет вреда меньше, чем сертификат выданный на год.

Теория заговора: хотя мне кажется все эти ограничения созданы искусственно с другой целью — оставить остальные центры сертификации на плаву. Кому то будет лень настраивать cron на перевыпуск сертификата, или же перевыпускать его вручную каждые три месяца. Кому то лень получать сертификаты на все поддомены. А так Let’s Encypt занимает свою нишу среди гиков, которым такие вещи только нравятся.

Как установить Let’s Encypt?

Для этого существует специальный одноименный клиент созданный этой же организацией:

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

В моем случае это выглядит вот так:

После чего будет создан каталог /etc/letsencrypt/live/intsystem.org/ с символическими ссылками на сертификаты и ключ:

Теперь путь к ним осталось прописать в конфиг Nginx

и рестартуем Nginx.

Как обновить сертификат?

Особого умения тут тоже не надо, используем ту же самую команду, но с параметром --renew-by-default:

В моем случае:

После выпуска и получения новых сертификатов, должны автоматически обновится символические ссылки на них:

и рестарт Nginx (reload).

Как обновлять сертификат Let’s Encypt автоматически?

Для этого можно добавить следующие комманды в крон на каждые два месяца:

После чего про головную боль связанную с SSL сертификатами можно забыть навсегда.

Итог

Сертификат от Let's Encypt на intsystem.org

  1. Виталя

    Надо будет к моему сайту тоже HTTPS подключить) А кстати если просто хостинг а не сервер, реально ли это?

    1. Дмитрий Амиров Автор

      Стандартная утилита требует рута для автоматизации процесса. Но у них так же есть АПИ, разобравшись с которым, я думаю можно сгенерировать сертификат и без рута. Или можно попробовать сгенерировать сертификат на другом сервере, но будет геморой с подтверждением прав на домен.
      В целом не уверен что это будет просто, но думаю что вполне реально.

      1. Странник

        Насколько я знаю, SSL сертификация требует выделенного IP. Не знаю как насчёт Let’s encrypt, но у остальных так

        1. Дмитрий Амиров Автор

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

  2. Странник

    Кстати, вы зря нападаете на 3-месячный срок. Книга Б. Шнайера и Н. Фергюсона «Практическая криптография», насколько я помню, рекомендует быстрое устаревание, тем более что очень многие браузеры вообще не смотрят списки отзыва. Никогда.

    1. Дмитрий Амиров Автор

      Мой внутренний криптограф считает так же. Но вот вторая часть меня негодует из за того что пришлось совершать лишние действия)

  3. Сергей

    Все сделал, но проблема с OCSP , nginx
    verify error:num=20:unable to get local issuer certificate

    stapling не включатся ((( подскажите как решить ? В файле fullchain цепочка из 2 элементов.

    1. Дмитрий Амиров Автор

      По моему это как то связано с корневыми сертификатами. Точный ответ на вопрос я не знаю. Рекомендую все же погуглить.

  4. Кирилл

    Дмитрий, нужно ли перегенерировать dhparam.pem, который используется в директиве ssl_dhparam, после обновления сертификата?

    1. Дмитрий Амиров Автор

      Нет конечно) Замаетесь каждый раз его перегенерировать :)

Добавить комментарий

Прочли запись? Понравилась? Не стесняйтесь, оставьте, пожалуйста, свой комментарий. Мне очень интересно, что вы думаете об этом. Кстати в комментарии вы можете задать мне любой вопрос. Я обязательно отвечу.

Вы можете оставить коментарий анонимно, для этого можно не указывать Имя и email. Все комментарии проходят модерацию, поэтому ваш комментарий появится не сразу.