Да, на Хабре уже много текстов про сертификаты Let’s Encrypt, но полной пошаговой инструкции я, к сожалению, не нашёл. Хотел восполнить пробел. К тому же, с мая 2016 года в процессе установки произошли незначительные изменения, которые могут сбить с толку новичка. Поэтому я решил написать эту инструкцию. Так сказать себе на память и другим в помощь.

Эта инструкция, в первую очередь, должна быть интересна новичкам.

image

Если у вас все настройки установлены по умолчанию, можно смотреть те пути, которые я привёл. То есть, если вы используете систему, установленную с помощью скрипта Bitrix environment на операционной системе CentOS 6.X. Если же нет, вы и сами знаете где что лежит.

Установка


Первое, что необходимо сделать — установить git:

# yum install git

Далее переходим в директорию /tmp:

# cd /tmp

С помощью git скачиваем файлы Let’s Encrypt. Сам скрипт теперь называется certbot:

# git clone https://github.com/certbot/certbot


Переходим в скачанную директорию:

# cd certbot

На всякий случай, даем права на выполнение для файла скрипта:

# chmod a+x ./certbot-auto

Получение сертификата


Далее следует команда непосредственно получения сертификата:

# ./certbot-auto certonly --webroot --agree-tos --email mypost@my-domain.ru -w /home/bitrix/www/ -d my-domain.ru -d www.my-domain.ru

--webroot — так как автоматическая установка для nginx пока не надежна, используем этот ключ;
--agree-tos — соглашаемся с лицензионным соглашением;
--email mypost@my-domain.ru — указываем свой e-mail. В дальнейшем он может пригодиться для восстановления своего аккаунта;
-w /home/bitrix/www — указываем корневую директорию сайта;
-d my-domain.ru — наш домен. так же можно указывать и поддомены, например -d site.my-domain.ru.

После этого скрипт начнет работу и предложит установить недостающие пакеты. Соглашаемся и ждём.

Если всё завершится успешно, вы увидите сообщение:

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/my-domain.ru/fullchain.pem. Your
cert will expire on 2016-08-21. To obtain a new version of the
certificate in the future, simply run Certbot again.
- If you lose your account credentials, you can recover through
e-mails sent to mypost@my-domain.ru.
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Сертификаты установлены, осталось только указать nginx'у, где они лежат.

Настройка


Открываем конфигурационный файл ssl.conf:

# vim /etc/nginx/bx/conf/ssl.conf

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

ssl_certificate /etc/letsencrypt/live/my-domain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my-domain.ru/privkey.pem;

Не забываем включить ssl, если этого не было сделано ранее:

ssl on;
keepalive_timeout 70;
keepalive_requests 150;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

После этого перезапускаем nginx:

# service nginx reload

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

Обновление


Сертификат выдается на 90 дней, так что после этого срока нужно будет его обновить. Делается это командой:

# certbot-auto renew

Её так же можно поставить в cron.

На этом всё. Для составления инструкции я использовал статью Yet another инструкция по получению ssl-сертификата Let's Encrypt и официальный гайд.
Поделиться с друзьями
-->

Комментарии (17)


  1. zenn
    24.05.2016 11:41
    +6

    Прочитал статью до конца, думаю вполне годный материал для новичков(хоть подобные материалы уже и есть на хабре). Но назрел 1 вопрос по релевантности заголовка статьи к ее содержимому — "а где и причем тут битрикс?".


    1. geolaz
      24.05.2016 12:22

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


      1. zenn
        24.05.2016 13:19
        +3

        Я думаю это не имеет значения, т.к. в системе могло быть что угодно, хоть набор скриптов на perl'e. Дело в том, что эта настройка затрагивает только nginx и генерацию letsencrypt. В битриксе вы не делаете абсолютно ничего.
        П.с. — для интереса, пройдите поиском по своему тексту на слова «битрикс» — их там ровно 0 не считая заголовок.


  1. v0rdych
    24.05.2016 11:47
    +4

    # service nginx restart
    Так он же упадет после этого, если с конфигом что-то не так.
    # service nginx reload исключительно.

    Плюсом, сам letsencrypt вроде как не рекомендует прописывать прямые пути в конфигах nginx на /etc/letsencrypt/… а копировать их в скрипте крона, который обновляет сертификаты.


    1. psman
      24.05.2016 12:03
      +2

      nginx -t


    1. geolaz
      24.05.2016 12:19

      # service nginx reload исключительно.

      Спасибо, исправил.
      сам letsencrypt вроде как не рекомендует прописывать прямые пути в конфигах nginx

      В инструкции этого не увидел, но, думаю, можно и так и эдак.


    1. andreymal
      25.05.2016 00:50

      В live же вроде всегда свежие симлинки, ссылаться на которые вполне можно, не?


      1. v0rdych
        25.05.2016 11:41

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

        All generated keys and issued certificates can be found in /etc/letsencrypt/live/$domain. Rather than copying, please point your (web) server configuration directly to those files (or create symlinks)

        Явно говорят можно, и даже рекомендовано.


  1. mwambanatanga
    24.05.2016 12:19
    -1

    С помощью git скачиваем файлы Let’s Encrypt. Сам скрипт теперь называется certbot:

    Вообще-то, наоборот, это раньше certbot назывался официальными скриптом. С их вебсайта:

    Certbot was developed by EFF and others as a client for Let’s Encrypt and was previously known as “the official Let’s Encrypt client”

    Теперь официальным клиентом считается github.com/letsencrypt/letsencrypt


    1. geolaz
      24.05.2016 12:20
      -1

      Until May 2016, Certbot was named simply letsencrypt or letsencrypt-auto

      Пруф


    1. Kju
      24.05.2016 14:15

      Хм ваша ссылка редиректиктит как раз на https://github.com/certbot/certbot. Да и официальный сайт (https://letsencrypt.org/getting-started/) отправляет на Certbot


      1. mwambanatanga
        25.05.2016 05:27

        Хм, и правда. Виноват.


  1. Ualde
    24.05.2016 13:22
    +2

    https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04
    статья куда серьезнее и без привязки к «Битрикс»


  1. questor
    24.05.2016 14:43

    Хм, той статье уже три месяца. Пошёл дописал в комментах свой опыт про обновление сертификата. Тоже не менее важный процесс, чем первичная установка. Вкратце: всё работает само, даже и писать особо-то нечего.


  1. pkuutn
    25.05.2016 00:50

    Я не могу сказать, что очень уж продвинутый админ
    Но то, что их скрипт тянет за собой build stack, мне нравится не очень.
    И вообще скрипт очень уж… самоуверен, чтоли.


  1. as3k
    25.05.2016 12:36

    Вы stapling тоже не смогли настроить?
    Мучался и гуглил сам около 2 дней — не смог.


  1. qant
    26.05.2016 23:18

    Для меня как новичка, не понятно как быть если есть и nginx и apache?