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




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

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

Автор:

Статья написана 2018-02-22 11:38:06
Последние правки 2019-02-21 20:34: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
    


  • Получение сертификатов "вручную" (standalone)
    Подходит, если вам нужен сертификат не для сайта, а, например, почтовика и когда не установлен 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 будет вываливаться с ошибкой и не получит новый сертификат. Если сертификат был выпущен для нескольких доменов, то просрочка будет для всех доменов сертификата.


  • Отзыв сертификата: FreeBSD
    # certbot revoke --cert-path /usr/local/etc/letsencrypt/live/CERTNAME/cert.pem
    
    Ubuntu
    # certbot revoke --cert-path /etc/letsencrypt/live/CERTNAME/cert.pem
    
    Удаление сертификата с диска сервера:
    # certbot delete --cert-name mysite.com
    


  • 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;
    
    Ubuntu
    ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem;
    


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


Связанные странички:
Получаем SSL сертификаты от Let's Encrypt при помощи acme.sh.
Ubuntu удаляем диск из массива
FreeBSD - подключаемся к megafon
Загрузочная флешка для Ubuntu
Устанавливаем Postgresql 9.6 в Ubuntu
memcached на FreeBSD
FreeBSD - net-snmp
Ubuntu, KDE, разблокировка связки ключей.
Обновление исходного кода FreeBSD 10.1
Haproxy - установка и настройка в Ubuntu