Показать страницуСсылки сюдаНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Установка бесплатного ssl-сертификата Let’s Encrypt ====== [[billing:howto|Вернуться на уровень выше]] Let’s Encrypt — бесплатный ssl сертификат, важной особенностью которого является полностью автоматизированный процесс выдачи. Даже со стороны клиента выдачу и продление сертификата можно автоматизировать. В данный момент сертификат проходит проверки всех основных браузеров. Можно использовать в коммерческих целях. Минусы: - Использование скрипта для создания и обновления сертификата (пока что с ним на боевых серверах проблем не было). - Отсутствие гарантий (в случае взлома никаких компенсаций не будет). - На каждый субдомен сертификат нужно получать отдельно (продление всех сразу одной командой). === Заметка === Если сайт доступен только по https, то сертификат не сформируется. Пример ошибки: <file> Verify error:Invalid response from http://my-domain.ru/.well-known/acme-challenge/jkQL_lUhdNCys79WYdMP_Y0frdV5Fj </file> Даже если есть перенаправление с 80 порта. Делаем сайт доступным по 80 и 443 порту. Или для nginx делаем такое перенаправление: <code> 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; } </code> ===== Установка bash скриптом ===== <file> wget -O - https://get.acme.sh | sh </file> или <file> curl https://get.acme.sh | sh </file> ==== Настройка ==== Пример создания сертификата для админки: <file> /root/.acme.sh/acme.sh --issue -d admin.example.com -w /var/www/mikbill/admin --server letsencrypt </file> Для кабинета: <file> /root/.acme.sh/acme.sh --issue -d stat.example.com -w /var/www/mikbill/stat --server letsencrypt </file> Добавляем в конфиг nginx (не забудьте указать в пути свой домен): <code> ssl_certificate /root/.acme.sh/admin.example.com/fullchain.cer; ssl_certificate_key /root/.acme.sh/admin.example.com/admin.example.com.key; </code> Добавлям в крон автообновление (каждый домен отдельно!): <code> # 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 </code> <note important> На основе этого решения есть полуавтоматический скрипт https://github.com/mikbill/design/blob/master/ssl/sert_lets.sh Надо только прописать домены. Скрипт сам поставит все что нужно и выдаст информацию что занести в конфиг nginx и крон </note> billing/howto/let_s_encrypt.txt Последнее изменение: 3 лет назад — gudwin