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
, откуда они и копируются в вышеуказанные каталоги.
Получение информации о подписанном сертификате
Получить информацию о подписанном сертификате можно следующим образом:
$ openssl x509 -in $CERT_FILE_PATH -text