Главная
   Документация
      Asterisk
      CentOS
      Debian
      Docker
      FreeBSD
      openHAB
      PostgreSQL
      Raspberry Pi
      Ubuntu
      WWW
      Разное




Главная Документация WWW › Получаем SSL сертификаты от Let's Encrypt.

Получаем SSL сертификаты от Let's Encrypt.

Автор:

Статья написана 2018-02-22 11:38:06
Последние правки 2018-10-29 11:45:10

Let's Encrypt - центр сертификации от некоммерческой организации ISRG, существующий при поддержке EFF и многих компаний, взявшей на себя миссию дать людям бесплатные SSL/TLS сертификаты для сайтов и серверов. Работать с Let's Encrypt будем через программу Certbot. ОС: FreeBSD или Ubuntu.


  • Certbot - установка
    FreeBSD
    # cd /usr/ports/security/py-certbot
    # make install clean
    
    Ubuntu
    Пробуем:
    # apt-get install certbot
    
    Если не найдена, значит у вас старая версия убунты и необходимо сделать так:
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
    sudo apt-get install letsencrypt
    



  • Регистрация в Let's Encrypt (одноразово)
    # certbot register --email your@email.com
    



  • Получение сертификатов "вручную"
    Подходит, если вам нужен сертификат не для сайта, а, например, почтовика и когда не установлен web-сервер.
    В процессе получения сертификатов таким способом, на сервере должен быть свободен 80-й порт, что означает необходимость тушить nginx на время получения сертификатов;
    # certbot certonly --standalone -d mysite.com -d mail.mysite.com
    



  • Обновление сертификатов для сайтов
    Это случай, когда certbot должен обновлять сертификаты на сервере, где работает nginx и который тушить крайне нежелательно.

    Создаем директорию .well-known, в которой certbot будет создавать файлы, необходимые для проверки прав на домены. Я такую сделал на default сайте, но вы можете делать её где угодно:
    # mkdir /sites/_default/htdocs/.well-known
    
    Для проверки, создайте там html-файл, он должен быть доступен по http(s) с сайтов, для которых выпускается сертификат.

    Создаем файл с настройками certbot
    FreeBSD - /usr/local/etc/letsencrypt/cli.ini
    authenticator = webroot
    webroot-path = /sites/_default/htdocs
    post-hook = /usr/local/etc/rc.d/nginx reload
    text = True
    
    Ubuntu - /etc/letsencrypt/cli.ini
    authenticator = webroot
    webroot-path = /sites/_default/htdocs
    post-hook = systemctl reload nginx
    text = True
    

    Затем, делаем include-файл с location внутри для nginx. Обзываем его acme.inc.
    location /.well-known {
        root /sites/_default/htdocs;
    }
    
    Этот файл нужно будет добавить в nginx во все server, для сайтов которых обновляются сертификаты:
       include /usr/local/etc/nginx/acme.inc;
    

    Пробуем тестовый (--dry-run) запрос сертификата:
    # certbot certonly --dry-run -d mysite.com -d www.mysite.com
    ....
    IMPORTANT NOTES:
     - The dry run was successful.
    

    Получаем сертификат по-настоящему:
    # certbot certonly -d mysite.com -d www.mysite.com
    

    Если вдруг приспичило добавить в сертификат новый поддомен, то запускаем так (перечисляем уже существующие домены плюс добавляем новый):
    # certbot certonly --expand -d mysite.com -d www.mysite.com -d new.mysite.com
    



  • Автоматическое обновление через cron
    В Ubuntu о нас уже позаботились, команда для запуска находится в файле /etc/cron.d/certbot, единственное, что нужно сделать, это добавить в файле в конец строки запуска (после certbot -q renew) ключ:
     --allow-subset-of-names
    
    Для FreeBSD добавляем в cron строчку:
    33 */12 * * * /usr/local/bin/certbot renew --quiet --allow-subset-of-names
    
    33 - обязательно замените на число от 0 до 59;
    --allow-subset-of-names - этот ключ при обновлении позволяет пропускать те домены, для которых нельзя подтвердить владение. Если ключ не задать, то certbot будет вываливаться с ошибкой и не получит новый сертификат. Если сертификат был выпущен для нескольких доменов, то просрочка будет для всех доменов сертификата.


  • nginx - пути к сертификатам для добавления в блок server

    FreeBSD
    ssl_certificate /usr/local/etc/letsencrypt/live/mysite.com/fullchain.pem;
    ssl_certificate_key /usr/local/etc/letsencrypt/live/mysite.com/privkey.pem;
    ssl_trusted_certificate /usr/local/etc/letsencrypt/live/mysite.com/chain.pem;
    
    Ubuntu
    ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/mysite.com/chain.pem;
    


  • Посмотреть данные сертификата
    # openssl x509 -in cert.pem  -noout -text
    


  • acme.sh
    # acme --issue -d "domain.ru" --dns "dns_show" -d "www.domain.ru" --dns "dns_show" --dnssleep 120
    
    --dnssleep 120 - период ожидания добавления записи в DNS



Связанные странички:
Установка Asterisk 13 в FreeBSD
Настраиваем сеть в Ubuntu 18.04
Docker, установка в Ubuntu
FreeBSD - net-snmp
Debian, Ubuntu apt - ошибка KEYEXPIRED
TightVNC (FreeBSD)
FreeBSD 10, работаем с zfs
FreeBSD, установка и настройка торрент-клиента transmission
ClamAV - установка на сервере FreeBSD
Работа с mysql в FreeBSD из консоли