В статье про бесплатные сертификаты для доменов я упомянул, что получить его и настроить сервер с появлением центра сертификации Let’s Encrypt стало очень просто. Покажу все шаги для настройки Apache.
Для начала, нужно загрузить установщик Let’s Encrypt. Если у вас чистая виртуальная машина, то кроме Git ничего не понадобится. Все остальные зависимости будут установлены позже.
apt-get install git
Клонируем репозиторий из Github.
git clone https://github.com/letsencrypt/letsencrypt
Переходим в папку с инсталятором.
cd letsencrypt
Инсталятор запускается командой:
./letsencrypt-auto
У него много параметров, посмотреть которые можно в справке.
./letsencrypt-auto --help all
Нас интересует получение сертификатов и установка их в Apache.
./letsencrypt-auto --apache
Установщик проверяет конфигурацию сервера. Если вы явно не указали доменные имена, то он предложит их ввести вручную.
Если домены были явно указаны, то инсталлятор предложит выбрать для каких из них он должен получить сертификат.
Он так же попросит указать email для обратной связи. Этот адрес электронной почты не будет добавлен в сертификат.
Перед полученим сертификатов требуется принять условия предоставления услуг.
Установщик может добавить правила для перенаправления пользователей с обычной версии сайта на версию с безопасным подключением.
Настройка завершена. Инсталлятор предлагает проверить конфигурацию сервера с помощью онлайн сервиса Qualys SSL Lab .
Сайт уже можно попробовать открыть в браузере.
Инсталлятор скопировал существующую конфигурацию сайта, добавил в оригинальный файл редирект на HTTPS-версию, а в копии указал пути до приватного ключа, сертификата домена и промежуточных сертификатов. Так же он подключил файл с дополнительными настройками для mod_ssl.
Как видите, настройка безопасного соединения для вашего сервера оказалась не такая уж и сложная.
Коментарии к заметке
Спасибо, на выходных буду пробовать. Одно осталось непонятным: продляется сертификат автоматически или каждые 3 месяца нужно проводить эти процедуры?
Чтобы обновить сертификат, нужно запустить инсталлятор ещё раз с теми же параметрами. Он получит новый и поменяет симлинк на него так, что в конфигурации ничего не придётся менять.
Разработчики пишут, что запуск инсталлятора можно добавить в cron. Так обновление будет работать на автомате.
А для nginx можете описать?
Здравствуйте, Владимир, спасибо за статью.
Только начал разбираться с https, подскажите, мы всё эти команды сразу запускаем на виртуальном хостинге? Читал др. инструкции, там сначала формировали сертификат на «машине», а затем копировали на хостинг, это немного другое, да, а то я совсем запутался.
Алексей, если вы используете хостинг с доступом по FTP (или даже SSH), то получать и обновлять сертификат будет немного нетривиально. Скорее всего, вы даже не сможете там запустить инсталлятор без прав администратора. Предполагаю, что можно найти способ как получить сертификат на другом сервере и перенести на нужный. Ничего не могу сказать по этому поводу.
Работа с ЦС Let’s Encrypt предполагает, что у вас VPS (виртуальный сервер) или VDS (выделенный сервер). Только тогда можно получить ту степень автоматизации, о которой я написал.
Если у вас простой хостинг с поддержкой SSL/TLS, я могу порекомендовать выпустить аналогичный сертификат для домена в StartSSL на год и попросить установить его в службе поддержки.
Ещё одним вариантом может быть использование CDN CloudFlare. Он сам сгенерирует сертификат. Вдобавок предоставит вам «из коробки» доступ к сайту по HTTP/2 и многое другое.
mihdan, nginx «на автомате» пока не конфигурируется. Разработка плагина в процессе. Для серверов, отличных от Apache, можно выпустить сертификат в ручном режиме.
При попытке запустить инсталлятор выводится ошибка: WARNING: Python 2.6 support is very experimental at present…
Булат, поищите эту ошибку на форуме поддержки Let’s Encrypt — https://community.letsencrypt.org/
Булат, Для устранения этой ошибки необходимо установить python 2.7 Как это сделать: https://community.letsencrypt.org/t/redhat-centos-6-x-users-need-python-2-7/2190
Владимир, спасибо за статью, все получилось, но вот начиная с момента «Инсталлятор скопировал существующую конфигурацию сайта» у меня инсталлятор этого видимо почему-то не сделал и сайт доступен как по http, так и по https. Хотя я при установке выбрал опцию Secure, то есть, чтобы все направлялось на https. Не подскажете, как это поправить?
Если я правильно понял, то нужно добавить в конфигурацию редирект с HTTP на HTTPS.