Let's Encrypt
Содержание
Клиенты
Взаимодействие с сервером Let's Encrypt происходит посредством протокола ACME. Кроме официального клиента letsencrypt существует большое количество сторонних реализаций. Список клиентов Let's Encrypt можно посмотреть на странице List of Client Implementations.
Пример использования
Здесь мы рассмотрим получение сертификата через клиент le, написанный на Bash.
Предполагается, что сервер работает под Ubuntu 14.04, используется nginx в качестве web-сервера, и действия выполняются от root'а.
Во-первых, мы должны склонировать репозиторий -- допустим, в каталог /opt/le
:
$ git clone https://github.com/Neilpang/le.git /opt/le
Далее необходимо выполнить установку:
$ cd /opt/le $ ./le.sh install
Установщик создаёт каталог ~/.le
и копирует в него le.sh
, создаёт символьную ссылку /bin/le -> ~/.le/le.sh
и добавляет в cron текущего пользователя (в нашем случае, root'а) задание по проверке сертификата и обновления его, если это требуется.
Теперь мы можем получить наш сертификат:
# Название домена, для которого необходим сертификат: $ export DOMAIN=example.ru
# Длина ключа: $ export KEY_LEN=2048
# Путь к файлу сертификата (публичного ключа): $ export CERT_FILE_PATH=/etc/ssl/certs/${DOMAIN}.cert
# Путь к файлу (закрытого) ключа: $ export KEY_FILE_PATH=/etc/ssl/private/${DOMAIN}.key
# Путь к сертификату центра сертификации Let's Encrypt: $ export CA_CERT_FILE_PATH=/etc/ssl/certs/ca-letsencrypt.cert
# Команда перезапуска web-сервера (выполняется после обновления # сертификата, скажем, по cron'у): $ export RELOAD_CMD="service nginx restart"
$ le issue no \ $DOMAIN $DOMAIN $KEY_LEN \ $CERT_FILE_PATH \ $KEY_FILE_PATH \ $CA_CERT_FILE_PATH \ $RELOAD_CMD
Таким образом, после работы программы мы получим три файла:
- В каталоге
/etc/ssl/certs/
-- подписанный публичный ключ (сертификат)example.ru.cert
и публичный ключ (сертификат) центра сертификацииca-letsencrypt.cert
. - В каталоге
/etc/ssl/private/
-- приватный (закрытый) ключexample.ru.key
.
Также эти ключи находятся в каталоге ~/.le
, откуда они и копируются в вышеуказанные каталоги.
Gentoo Way
- С недавних пор официальный клиент Let's Encrypt переименован в
certbot
-- см. пакетapp-crypt/certbot
в портежах. -- Avp (обсуждение) 21:44, 14 июня 2016 (UTC)
Здесь мы рассмотрим установку и использование официальной утилиты letsencrypt
на Hardened Gentoo GNU/Linux и web-сервером lighttpd.
Как будет видно далее, "особенностей" при установке обнаруживается не так много, и даже не нужно отключать SELinux. Начнём с того, что в случае с Gentoo в портежах уже есть все необходимые утилиты, так что шаг "ожидание ebuild'ов" можно пропустить:
$ eix letsencrypt [I] app-crypt/letsencrypt Available versions: (~)0.4.2 **9999 {test PYTHON_TARGETS="python2_7"} Installed versions: 0.4.2(21:49:00 03/10/16)(-test PYTHON_TARGETS="python2_7") Homepage: https://github.com/letsencrypt/letsencrypt https://letsencrypt.org/ Description: Let's encrypt client to automate deployment of X.509 certificates * app-crypt/letsencrypt-apache Available versions: **9999 {test PYTHON_TARGETS="python2_7"} Homepage: https://github.com/letsencrypt/letsencrypt https://letsencrypt.org/ Description: Apache plugin for letsencrypt Found 2 matches.
Ставится стандартным способом:
$ emerge -aq --autounmask-write letsencrypt
"Размаскируем" пакет и предложенные зависимости (к примеру, через etc-update
), запускаем приведённую выше команду по-новой, ждём установки. Пакет поставит за собой необходимые зависимости (к примеру, app-crypt/acme
.)
Останавливаем web-сервер (в моём случае, lighttpd
), чтобы освободить порт 80:
$ rc-config stop lighttpd
Запускаем операцию получения ключа:
$ letsencrypt certonly
и отвечаем на задаваемые утилитой вопросы. Данная команда выполнит только операцию получения сертификата, без его установки в web-сервер. Ключи будут сохранены в каталог /etc/letsencrypt/archive/example.org
, симлинки на них брошены в /etc/letsencrypt/live/example.org
.
Для lighttpd
придётся сделать дополнительный шаг: склеить приватный ключ и публичный сертификат в один файл:[1]
$ cd /etc/letsencrypt/archive/example.org/ $ cat privkey1.pem cert1.pem > ssl1.pem $ ln -s /etc/letsencrypt/archive/example.org/ssl1.pem /etc/letsencrypt/live/example.org/
Далее прописываем путь к вашему ключу в конфигурационный файл lighttpd
. К примеру, кусок /etc/lighttpd/lighttpd.conf
:
$SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/letsencrypt/live/example.org/ssl1.pem" ssl.ca-file = "/etc/letsencrypt/live/example.org/fullchain.pem" }
Перезапускаем web-сервер:
$ rc-config start lighttpd
Открываем сайт в браузере и любуемся результатом. :-) -- Avp (обсуждение) 19:00, 14 марта 2016 (UTC)
Получение информации о подписанном сертификате
Получить информацию о подписанном сертификате можно следующим образом:
$ openssl x509 -in $CERT_FILE_PATH -text