Подготовка

mkdir /root/letsencrypt /var/www/letsencrypt
cd /root/letsencrypt

Воспользуемся библиотекой acme_tiny. Вы можете использовать любую другую библиотеку

wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py

Генерируем ключ-идентификатор

openssl genrsa 4096 > /root/letsencrypt/account.key

Добавить в секцию server в настройках виртуального хоста в nginx

location /.well-known/acme-challenge/ {
    alias /var/www/letsencrypt/;
    try_files $uri =404;
}

Тестирование

echo "test" >> /var/www/letsencrypt/test.txt

И проверяем отдачу в браузере

http://domain.com/.well-known/acme-challenge/test.txt

Создание закрытого ключа, запроса сертификата и создание самого сертификата

Генерируем закрытый ключ

openssl genrsa 4096 > /root/letsencrypt/domain.com.key

Создаём файл с настройками для сертификата, где укажем наш email, а также доменное имя

cat << EOF > /root/letsencrypt/domain.com.txt
[req]
default_bits = 4096
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C=RU
emailAddress=info@domain.com
CN = domain.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = domain.com
DNS.2 = www.domain.com
EOF

Создаём запрос

openssl req -new -sha256 -key /root/letsencrypt/domain.com.key \
-nodes -out /root/letsencrypt/domain.com.csr \
-config /root/letsencrypt/domain.com.txt

И запускаем загруженную нами библиотеку для получения сертификата

python acme_tiny.py --account-key /root/letsencrypt/account.key \
--csr /root/letsencrypt/domain.com.csr \
--acme-dir /var/www/letsencrypt/ > /root/letsencrypt/domain.com.crt

Скрипт обновления

Этот скрипт можно добавить в планировщик cron для атоматизации получения сертификата.

cat << EOF > renew_cert.sh
#!/bin/bash
python acme_tiny.py --account-key /root/letsencrypt/account.key \
--csr /root/letsencrypt/domain.com.csr \
--acme-dir /var/www/letsencrypt/ > /root/letsencrypt/domain.com.new || exit
mv /root/letsencrypt/domain.com.new /root/letsencrypt/domain.com.crt
service nginx reload
EOF

 

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