Установка бесплатного ssl-сертификата Let’s Encrypt
Let’s Encrypt — бесплатный ssl сертификат, важной особенностью которого является полностью автоматизированный процесс выдачи.
Даже со стороны клиента выдачу и продление сертификата можно автоматизировать.
В данный момент сертификат проходит проверки всех основных браузеров.
Можно использовать в коммерческих целях.
Минусы:
- Использование скрипта для создания и обновления сертификата (пока что с ним на боевых серверах проблем не было).
- Отсутствие гарантий (в случае взлома никаких компенсаций не будет).
- На каждый субдомен сертификат нужно получать отдельно (продление всех сразу одной командой).
my-domain.ru - везде ниже меняем на свой домен
Установка и настройка
Пример ошибки:
Даже если есть перенаправление с 80 порта. Делаем сайт доступным и по 80 и по 443 порту.
Или для nginx делаем такое перенаправление:
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
- 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
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:
Настройка конфига httpd:
Сертификат на 60 дней. Для автоматического продления работы добавляем следующую команду в cron:
ssl_certificate /etc/letsencrypt/live/my-domain.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/my-domain.ru/privkey.pem;
SSLCertificateKeyFile /etc/letsencrypt/live/my-domain.ru/privkey.pem SSLCertificateFile /etc/letsencrypt/live/my-domain.ru/fullchain.pem
# 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
Если нет вывода, значит собран без поддержки ГОСТ
Комментарии
Отправить комментарий