Wildcard сертификат в Synology

Всем привет!!!

В этом материале я покажу как получить Wildcard сертификат в Synology и автоматически его продлять используя для этого контейнер docker.

Введение

Для чего нужен SSL сертификат?

SSL сертификат на домашнем сервере обеспечивает защищенное соединение между сервером и клиентом. Он шифрует данные, передаваемые между приложением пользователя и сервером, что помогает защитить конфиденциальность информации, такой как личные данные, пароли, банковские данные и другие чувствительные сведения. Кроме того, SSL сертификат помогает подтвердить подлинность вашего сервера, что повышает доверие пользователей к вашему сайту или приложению.

Где взять ssl сертификат?

SSL сертификаты можно получить у различных поставщиков услуг. Некоторые из наиболее известных поставщиков SSL сертификатов включают:

1. Let’s Encrypt: Это проект, предоставляющий бесплатные SSL сертификаты. Они предлагают простой процесс установки и обновления.

2. Comodo: Это один из крупнейших поставщиков SSL сертификатов, предлагающий различные виды сертификатов, включая долгосрочные и корпоративные сертификаты.

3. DigiCert: Это компания, предлагающая широкий спектр SSL сертификатов, включая Wildcard и EV (Extended Validation) сертификаты.

4. GoDaddy: Это крупный регистратор доменных имен, который также предлагает услуги SSL сертификации.

5. GlobalSign: Еще один крупный поставщик SSL сертификатов, предлагающий различные виды сертификатов для различных потребностей.

Выбор поставщика зависит от ваших потребностей, бюджета и уровня доверия, который вам необходимо обеспечить вашим пользователям.

Где взять бесплатный ssl сертификат?

Бесплатные SSL сертификаты можно получить у различных поставщиков. Один из наиболее популярных вариантов — использовать Let’s Encrypt. Они предоставляют бесплатные SSL сертификаты с открытым исходным кодом на 90 дней. Для получения сертификата от Let’s Encrypt вам потребуется выполнить несколько шагов, например, установить клиент Let’s Encrypt на вашем сервере и сгенерировать SSL сертификат для вашего домена. А через 90 дней сертификат нужно продлить.

Synology поддерживает Let’s Encrypt?

Synology поддерживает Let’s Encrypt для получения бесплатных SSL сертификатов. В DSM (DiskStation Manager) от Synology есть встроенная функция поддержки Let’s Encrypt, что делает процесс получения и установки SSL сертификата очень удобным.

Чтобы настроить Let’s Encrypt на вашем устройстве Synology, выполните следующие шаги:

  1. Войдите в DSM на вашем устройстве Synology.
  2. Перейдите в раздел “Панель управления” и выберите “Сертификат SSL/TLS”.
  3. Нажмите на вкладку “Сертификаты” и затем на кнопку “Добавить”.
  4. Выберите “Добавить сертификат” -> “Добавить сертификат Let’s Encrypt”.
  5. Укажите доменное имя, для которого вы хотите получить SSL сертификат, и следуйте инструкциям на экране для завершения процесса.

После завершения этих шагов ваше устройство Synology должно быть защищено SSL сертификатом от Let’s Encrypt. Теперь ваш веб-сайт или другие службы на устройстве будут использовать безопасное соединение HTTPS. DSM автоматически обновит сертификат до истечения срока его действия.

Нюанс получения ssl сертификата от Let’s Encrypt.

Let’s Encrypt выдает сертификаты не всем подряд. Что бы получить такой сертификат нужно подтвердить владение доменом. Если бы не было этой проверки, то доверять таким ssl сертификат никто бы не стал. Let’s Encrypt поддерживает несколько методов проверки, включая HTTP-аутентификацию, DNS-аутентификацию и TLS-аутентификацию.

В Synology используется метод HTTP-аутентификацию. Когда вы запрашиваете у Let’s Encrypt сертификат для вашего домена, Let’s Encrypt проверяет доступность домена по 80 порту. Соответственно у вас должен быть белый IP адрес и проброшен 80 порт на ваш Synology.

Но и это еще не все. Synology поддерживает Wildcard сертификаты только для собственного домена, например для synology.me, который используется для службы DDNS. Если у вас есть собственный домен, то вам нужно перечислять все поддомены, например site.bafista.ru и app.bafista.ru в поле альтернативное имя. Согласитесь это не всегда удобно.

Гораздо удобнее было бы указать *.domen.ru и тогда все поддомены получили бы сертификат, но в DSM нет такой возможности из коробки для собственного домена.

Wildcard-сертификат – это SSL-сертификат, который защищает не только ваш основной домен, но и все его поддомены. Например, если у вас есть домен example.ru, wildcard-сертификат также защитит все поддомены, такие как blog.example.ru, shop.example.ru д. Это удобно и экономит время при управлении безопасностью для нескольких поддоменов.

Automated Certificate Management Environment

Для упрощения получения ssl сертификата в Synology можно воспользоваться утилитой ACME (Automated Certificate Management Environment), которая может получить заветный Wildcard и импортировать его в Synology, а потом еще и автоматически его продлевать.

acme.sh – это простая open-source автоматизированная утилита командной строки для получения и установки SSL-сертификатов от авторитетного центра сертификации (CA) с использованием протокола ACME (Automated Certificate Management Environment). Это инструмент, который помогает упростить процесс получения и обновления SSL-сертификатов вашего веб-сайта или приложения. Acme.sh поддерживает множество регистраторов доменных имен, а также может быть легко интегрирован с различными веб-серверами и платформами хостинга.

Фишкой acme.sh является поддержка различных ОС, например Synology DSM, и различных хостинг провайдеров, которых в этом мануале я рассматривать не буду, а пропишу DNS записи вручную, так как считаю это сделать проще и быстрее один раз и больше к этому не возвращаться.

Установка контейнера ACME

Системные требования минимальные, самое главное поддержка docker контейнеров.

Открываем Container Manager или Docker, переходим на вкладку Реестр и в поиске находим контейнер neilpang/acme.sh, выделяем его загружаем latest версию.

Теперь переходим в образы и когда образ загрузится выделяем его и нажимаем запустить

В открывшемся окне придумываем имя, например я сделал acme-sh, и обязательно ставим галочку автоматический перезапуск

В следующем окне первым делом добавьте папку для сохранения конфигурации. Я выбрал папку /docker/acme_sh и обязательно точку монтирования /acme.sh

Перемотайте ниже и укажите сеть host а команду обязательно укажите daemon. Последнее необходимо для автоматического продления сертификате каждые 60 дней.

Проверяем, что все правильно и запускаем контейнер.

Получение Wildcard сертификата

Затем открываем контейнер, кнопка действия и открыть терминал

В открывшемся окне создать терминал

Команду для запуска sh

Если все сделали верно, то увидите приглашение # в терминале на ввод команд.

Первым делом переключим acme.sh на letsencrypt такой командой:

acme.sh --set-default-ca --server letsencrypt

После можно запросить сертификат у letsencrypt для вашего домена. В теории достаточно только *.domen.ru, но я по старинке ввел и домен и * для всех поддоменов. Опция dns указывает на то, что проверка будет проходить через DNS запрос. Если этого не указать, то проверка будет через порт 80, а это не всегда удобно.

acme.sh --issue -d bafista.ru -d *.bafista.ru --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

В ответ вы получите примерно такой вывод. Теперь вам нужно внести эти TXT записи в свой DNS сервер как просит вас acme.sh.

Проверить на 2ip.ru через некоторое время _acme-challenge.bafista.ru

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

acme.sh --renew -d bafista.ru -d *.bafista.ru --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

Если все хорошо, то вы получите такое окно как показано ниже. Это означает, что все прошло удачно и сертификат wildcard в Synology получен.

Теперь нужно добавить этот сертификат в DSM. Для этого создайте нового пользователя с правами администратор и очень длинным паролем. Этому пользователю я рекомендую запретить все что только можно запретить, но права администратора у него должны быть. Это нужно, т.к. пароль пользователя будет лежать в открытом виде на сервере и не желательно, что бы кто-то им завладел и смог воспользоваться.

Теперь откройте файл account.conf в папке вашего контейнера текстовым редактором.

Нужно добавить следующие настройки:

export SYNO_Scheme="http"
export SYNO_Port="5000"
export SYNO_Hostname="IP-NAS"

export SYNO_Username="memnom"
export SYNO_Password="password"
export SYNO_Certificate="acme.sh (docker) certificate"
export SYNO_Create=1

В этих параметрах вроде должно быть все понятно. Подставляете свои значения в каждое поле. Момент только с параметром export SYNO_Create=1 его нужно закомментировать или удалить когда сертификат окажется в DSM

Уточню насчёт параметра export SYNO_Create=1. Рекомендую включить его при первоначальной настройке, а затем отключить после установки сертификатов. Включение этой опции позволяет устанавливать новые сертификаты в систему, а отключение — только продлевать существующие. Даже если созданные сертификаты были добавлены в систему вручную на предыдущем этапе настройки контейнера, имеет смысл явно перезаписать их с помощью опции deploy, так как существует вероятность дублирования сертификатов и их устаревания через три месяца из-за обновления клонов, а неоригинальных сертификатов.

https://habr.com/ru/articles/676140/

Настало время загрузить сертификат в DSM такой командой в терминале контейнера docker как делали ранее.

acme.sh --deploy -d bafista.ru -d *.bafista.ru --deploy-hook synology_dsm

Если deploy прошел успешно, то должны увидеть такую картину

И теперь, если перейти в панель управления, безопасность, сертификаты, то вы увидите ваш wildcard сертификат в Synology. Можно нажать настройки и навешать его на нужные сервисы.

Автоматическое обновление

Теперь, что касается автоматического обновления. Согласно документации автоматическое продление будет выполниться через 60 дней после получения сертификата и это же доказывают логи, которые вы увидите через сутки. Произойдет это или нет я узнаю только через 60 дней.

Тест страница

Для проверки работы этой инструкции я создал страницу https://test.bafista.ru и привязал к ней этот сертификат. Любой может зайти на нее и посмотреть этот сертификат. Посмотрим, что будет через 60 дней с момента создания сертификата и что будет через 90 дней с этой же даты. Обязательно дополню статью после прошествия 90 дней.


Ручное обновление сертификата

В других мануалах предлагают делать по другому и так как я не уверен, что мой способ работает я приведу другое решение автоматического продления такой командой:

docker exec acme-sh acme.sh --renew -d bafista.ru -d *.bafista.ru --yes-I-know-dns-manual-mode-enough-go-ahead-please

Эту команду нужно вбить в планировщик задач от имени root и выполнять не чаще чем раз в месяц. Обратите внимание, что acme-sh это имя контейнера докер, которые вы сами придумали и не забывайте указать свои домены.


Автоматизация через DNS API

Хотел по простому, а нужно было сразу как положено. Спасибо Юрию, подсказал в комментарии.

Что бы сертификат автоматически продлялся есть только одно решение: использовать DNS API. Я использую хостинг DNS dnsexit.com поэтому буду показывать на его примере, но там много разных примеров в том чисте и reg.ru.

Добавляем в файл account.conf следующие строки

export DNSEXIT_API_KEY="<Your API key>"
export DNSEXIT_AUTH_USER="<Your username>"
export DNSEXIT_AUTH_PASS="<Your password>"

Где указываем API ключь, который можно создать в настрйоках личного кабинета и логин с паролем.

После этого получаем сертификат и делаем деплой

acme.sh --renew -d bafista.ru -d *.bafista.ru --dns dns_dnsexit
acme.sh --deploy -d bafista.ru -d *.bafista.ru --deploy-hook synology_dsm

Первая команда пропишет TXT записи в вашем DNS, затем произойдет проверка и выдача сертификата. Можно добавить опцию –dnssleep 600 так как не всегда могут обновиться DNS записи за дефолтные 20 секунд.


Теперь вы знаете как получить Wildcard сертификат в Synology

Материалы, которые мне помогли

Видео ролик

YouTube

YouTube player

ВК

Подписаться
Уведомить о
guest
21 Комментарий
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии