====== Установка бесплатного ssl-сертификата Let’s Encrypt ====== [[billing:howto|Вернуться на уровень выше]] Let’s Encrypt — бесплатный ssl сертификат, важной особенностью которого является полностью автоматизированный процесс выдачи. Даже со стороны клиента выдачу и продление сертификата можно автоматизировать. В данный момент сертификат проходит проверки всех основных браузеров. Можно использовать в коммерческих целях. Минусы: - Использование скрипта для создания и обновления сертификата (пока что с ним на боевых серверах проблем не было). - Отсутствие гарантий (в случае взлома никаких компенсаций не будет). - На каждый субдомен сертификат нужно получать отдельно (продление всех сразу одной командой). === Заметка === Если сайт доступен только по 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 скриптом ===== wget -O - https://get.acme.sh | sh или curl https://get.acme.sh | sh ==== Настройка ==== Пример создания сертификата для админки: /root/.acme.sh/acme.sh --issue -d admin.example.com -w /var/www/mikbill/admin --server letsencrypt Для кабинета: /root/.acme.sh/acme.sh --issue -d stat.example.com -w /var/www/mikbill/stat --server letsencrypt Добавляем в конфиг nginx (не забудьте указать в пути свой домен): ssl_certificate /root/.acme.sh/admin.example.com/fullchain.cer; ssl_certificate_key /root/.acme.sh/admin.example.com/admin.example.com.key; Добавлям в крон автообновление (каждый домен отдельно!): # acme ssl cert auto renew 05 0 1 */2 * root /root/.acme.sh/acme.sh --renew --force -d admin.example.com 10 0 1 */2 * root /root/.acme.sh/acme.sh --renew --force -d stat.example.com # restart nginx for accept new certs 20 0 1 */2 * root /etc/init.d/nginx reload На основе этого решения есть полуавтоматический скрипт https://github.com/mikbill/design/blob/master/ssl/sert_lets.sh Надо только прописать домены. Скрипт сам поставит все что нужно и выдаст информацию что занести в конфиг nginx и крон