Установка бесплатного ssl-сертификата Let’s Encrypt



Let’s Encrypt — бесплатный ssl сертификат, важной особенностью которого является полностью автоматизированный процесс выдачи.

Даже со стороны клиента выдачу и продление сертификата можно автоматизировать.

В данный момент сертификат проходит проверки всех основных браузеров.

Можно использовать в коммерческих целях.

Минусы:

- Использование скрипта для создания и обновления сертификата (пока что с ним на боевых серверах проблем не было).

- Отсутствие гарантий (в случае взлома никаких компенсаций не будет).

- На каждый субдомен сертификат нужно получать отдельно (продление всех сразу одной командой).

my-domain.ru - везде ниже меняем на свой домен

Установка и настройка  

Если сайт доступен только по https, то сертификат не сформируется.
Пример ошибки:
Verify error:Invalid response from http://my-domain.ru/.well-known/acme-challenge/jkQL_lUhdNCys79WYdMP_Y0frdV5Fj

Даже если есть перенаправление с 80 порта. Делаем сайт доступным и по 80 и по 443 порту.

Или для nginx делаем такое перенаправление:
server {
    listen *:80;
server_name my-domain.ru;
rewrite ^/(.*)$ https://$host/$1 permanent;
rewrite ^.* https://$server_name/$1 permanent;
rewrite ^  https://$server_name/$1 permanent;
rewrite ^(.*)  https://$server_name/$1 permanent;
}

Установка bash скриптом

  • curl https://get.acme.sh | sh

или
  • wget -O - https://get.acme.sh | sh

или с Git
  • yum install git
  • git clone https://github.com/Neilpang/acme.sh.git 
  • cd ./acme.sh 
  • ./acme.sh --install

Настройка

cd ~/.acme.sh

Пример создания сертификата для админки:
  • ./acme.sh --issue -d my-domain.ru -w /var/www/mikbill/admin
Для кабинета:
  • ./acme.sh --issue -d my-domain.ru -w /var/www/mikbill/stat

Копируем сертификат и ключ:
  • cp ~/.acme.sh/my-domain.ru/fullchain.cer /etc/nginx/conf.d/ssl/fullchain.cer
  • cp ~/.acme.sh/my-domain.ru/my-domain.ru.key /etc/nginx/conf.d/ssl/my-domain.ru.key

Добавляем в конфиг nginx:
ssl_certificate         /etc/nginx/conf.d/ssl/my-domain.ru.cer;
ssl_certificate_key     /etc/nginx/conf.d/ssl/my-domain.ru.key;

Добавлям в крон автообновление (каждый домен отдельно!):
00 05 * * * root /root/.acme.sh/acme.sh --renew -d my-domain.ru
05 05 * * * root /etc/init.d/nginx reload


Для серверов Mikbill есть скрипт полуавтоматичской установки сертификатов с использованием acme.sh


Установка через python

  • yum install git
  • mkdir -p /etc/letsencrypt 
  • cd /etc/letsencrypt 
  • git clone https://github.com/certbot/certbot 
  • cd certbot 
  • chmod a+x certbot-auto

При запуске создания сертификата будут обновляться пакеты.
Их нужно хорошо просмотреть, чтобы не затронуло работу сервера.
Например если вручную собирался openssl

Пример создания сертификата для админки:
  • ./certbot-auto certonly --webroot --agree-tos --email mypost@my-domain.ru -w /var/www/mikbill/admin -d my-domain.ru -d www.my-domain.ru

Для кабинета:
  • ./certbot-auto certonly --webroot --agree-tos --email mypost@my-domain.ru -w /var/www/mikbill/stat -d my-domain.ru -d www.my-domain.ru 
Настройка конфига nginx:
ssl_certificate /etc/letsencrypt/live/my-domain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my-domain.ru/privkey.pem;

Настройка конфига httpd:
SSLCertificateKeyFile /etc/letsencrypt/live/my-domain.ru/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/my-domain.ru/fullchain.pem

Сертификат на 60 дней. Для автоматического продления работы добавляем следующую команду в cron:
# SSL sert
00 05 * * * root /etc/letsencrypt/certbot/certbot-auto renew
05 05 * * * root /etc/init.d/nginx restart

Тут смотреть статус работы сертификата и историю сбоев
https://letsencrypt.status.io/

Тут можно сделать вручную серт
https://www.sslforfree.com/



(Проверка показала, что обновление не затрагивает openssl ГОСТ, но на всякий)
Проверяем openssl, что он не собран вручную с поддержкой ГОСТ
Находим все openssl
  • find / -name openssl
И потом все найденные проверяем
  • путь_к_openssl_с_ГОСТ ciphers | tr ":" "\n" | grep GOST
Если нет вывода, значит собран без поддержки ГОСТ

Комментарии

Популярные сообщения из этого блога

mikbill расшифровка завершений сессий

Accel-ppp команды

Zabbix agent установка и настройка