- Установка сертификата на NGINX с помощью acme.sh в Ubuntu
- Получение скрипта acme.sh
- Скачать бесплатно acme.sh из интернета:
- Клонировать acme.sh проект с git
- Создание сертификата
- Установка сертификата на NGINX с помощью acme.sh
- Продление Сертификата
- Обновление скрипта acme.sh
- Заключение
- Установить доверенный корневой сертификат сбера в ubuntu
- Установить доверенный корневой сертификат сбера в ubuntu
- Важно! При использовании инструкции сбербанка в Ubuntu будет происходить ошибка: update-ca-trust: команда не найдена или update-ca-trust: command not found .
- Установим корневой и выпускающий сертификат сбербанка в Ubuntu по шагам
- Скрипт на загрузку и установку сертификатов
- SSL сертификат Let’s Encrypt с помощью acme.sh и bind
- Оглавление
- Настройка BIND
- Установка acme.sh
- Получение сертификатов
Установка сертификата на NGINX с помощью acme.sh в Ubuntu
А в этой инструкции мы хотели бы показать вам другой способ. С помощью которого вы можете легко получить и продлить бесплатный сертификат SSL/TLS от Let’s Encrypt используя acme.sh скрипт на Ubuntu 20.04.
Если у вас еще нет рабочего веб-сервера NGINX, тогда обратитесь к этому руководству по установке NGINX. Как установить NGINX на Ubuntu 20.04 и разместить сайт.
Получение скрипта acme.sh
Скрипт оболочки linux acme.sh автоматизирует выдачу и обновление бесплатных сертификатов от Let’s Encrypt. Вы можете получить acme.sh скрипт скачав его непосредственно из интернета, либо путем клонирования из проекта git.
Скачать бесплатно acme.sh из интернета:
Выполните любую из двух приведенных ниже команд, чтобы загрузить и выполнить acme.sh сценарий.
Ниже приведен пример того, что вы увидите при выполнении скрипта.
$ wget -O — https://get.acme.sh | sh
—2021-02-16 11:55:47— https://get.acme.sh/
Resolving get.acme.sh (get.acme.sh)… 2606:4700:3032::6815:223e, 2606:4700:3031::ac43:c710, 172.67.199.16, …
Connecting to get.acme.sh (get.acme.sh)|2606:4700:3032::6815:223e|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: unspecified [text/html]
Saving to: ‘STDOUT’
[ ] 937 —.-KB/s in 0s
2021-02-16 11:55:47 (11.8 MB/s) — written to stdout [937]
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 204k 100 204k 0 0 3350k 0 —:—:— —:—:— —:—:— 3350k
[Tue 16 Feb 2021 11:55:47 AM UTC] Installing from online archive.
[Tue 16 Feb 2021 11:55:47 AM UTC] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[Tue 16 Feb 2021 11:55:47 AM UTC] Extracting master.tar.gz
[Tue 16 Feb 2021 11:55:47 AM UTC] It is recommended to install socat first.
[Tue 16 Feb 2021 11:55:47 AM UTC] We use socat for standalone server if you use standalone mode.
[Tue 16 Feb 2021 11:55:47 AM UTC] If you don’t use standalone mode, just ignore this warning.
[Tue 16 Feb 2021 11:55:47 AM UTC] Installing to /home/shola/.acme.sh
[Tue 16 Feb 2021 11:55:47 AM UTC] Installed to /home/shola/.acme.sh/acme.sh
[Tue 16 Feb 2021 12:05:54 PM UTC] Installing alias to ‘/home/shola/.bashrc’
[Tue 16 Feb 2021 12:05:54 PM UTC] OK, Close and reopen your terminal to start using acme.sh
[Tue 16 Feb 2021 11:55:47 AM UTC] Installing cron job
47 0 * * * «/home/shola/.acme.sh»/acme.sh —cron —home «/home/shola/.acme.sh» > /dev/null
[Tue 16 Feb 2021 11:55:47 AM UTC] Good, bash is found, so change the shebang to use bash as preferred.
[Tue 16 Feb 2021 11:55:48 AM UTC] OK
[Tue 16 Feb 2021 11:55:48 AM UTC] Install success!
Клонировать acme.sh проект с git
Выполните следующие команды по одной на строку, чтобы клонировать файл acme.sh с сайта gitрги и выполнить скрипт.
$ git clone https://github.com/acmesh-official/acme.sh.git
$ cd acme.sh
$ ./acme.sh —install
Какой бы метод вы ни выбрали, как только вы увидите надпись «Install success!» это значит что вы можете закрыть окно терминала и снова открыть его, чтобы проверить правильность установки.
Чтобы проверить информация об использовании acme.sh, выполните следующую команду.
Вы также можете выполнить приведенную ниже команду, чтобы проверить acme.sh версия.
Создание сертификата
Чтобы сгенерировать сертификат для домена, выполните приведенную ниже команду.
Только замените yourdomain.com на ваш зарегистрированный. Кроме того, замените путь /var/www/yourdomain.com на корневую папку вашего домена.
$ acme.sh —issue -d yourdomain.com -w /var/www/yourdomain.com
При создании сертификата для нескольких доменов и поддоменов, совместно использующих одну и ту же корневую папку веб-сайта. Вы можете выполнить следующую команду для выдачи сертификата.
$ acme.sh —issue -d yourdomain.com -d www.yourdomain.com -d test.yourdomain.com -w /var/www/yourdomain.com
Установка сертификата на NGINX с помощью acme.sh
После создания сертификата выполните следующую команду, чтобы установить его на NGINX сервер.
$ acme.sh —install-cert -d yourdomain.com —key-file /path/to/keyfile/in/nginx/key.pem —fullchain-file /path/to/fullchain/nginx/cert.pem —reloadcmd «service nginx force-reload»
Примечание: также не забываем меня yourdomain.com на ваш домен.
Дополнительные параметры являются необязательными, за исключением домена.
Продление Сертификата
Сертификаты будут храниться в ~/.acme.sh/yourdomain.com и будут автоматически продлеваться каждые 60 дней.
Но вы также можете обновить сертификат вручную, если конечно захотите. Для обновления сертификата вручную, выполните вот такую команду.
$ acme.sh —renew -d yourdomain.com —force
Чтобы остановить обновление сертификата, выполните следующие действия.
Обновление скрипта acme.sh
Рекомендуется всегда использовать последнюю версию скрипта acme.sh. Для этого выполните такую команду, чтобы убедиться, что acme.sh обновляется автоматически.
Чтобы отключить автоматическое обновление для acme.sh, выполните следующую команду.
Если вам это не подходит и вы хотите обновлять acme.sh вручную, то используйте приведенную ниже команду.
$ acme.sh —upgrade
Заключение
В этой инструкции мы описали действия по получению и продлению бесплатных сертификатов SSL/TLS от компании Let’s Encrypt. С помощью скрипта оболочки Ubuntu acme.sh. Этот метод является альтернативой использованию инструмента Certbot.
Установить доверенный корневой сертификат сбера в ubuntu
Установить доверенный корневой сертификат сбера в ubuntu
На сайте сбербанка есть инструкция по установке сертификатов безопасности для Red Hat Linux.
Для Ubuntu эта инструкция немного отличается:
- В Ubuntu каталог для хранения сертификатов /usr/local/share/ca-certificates/ вместо /usr/share/pki/ca-trust-source/anchors/
- Утилита для обновления корневых сертификатов update-ca-certificates вместо update-ca-trust
Важно! При использовании инструкции сбербанка в Ubuntu будет происходить ошибка: update-ca-trust: команда не найдена или update-ca-trust: command not found .
Для переустановки update-ca-trust утилиты нужно переустановить пакет содержащий утилиту.
$ sudo apt-get --reinstall install ca-certificates
Установим корневой и выпускающий сертификат сбербанка в Ubuntu по шагам
Шаг 1. Открываем терминал Ctrl+T
Шаг 2. Скачиваем корневой и выпускающий сертификат (ссылки на момент написания статьи)
$ wget https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt -P /tmp/
Скачали и сохранили в каталог tmp.
Шаг 3. Копируем сертификаты в каталог хранилища сертификатов с повышением прав
$ sudo cp /tmp/russian_trusted_*.crt /usr/local/share/ca-certificates/
Шаг 4. Обновляем сертификаты утилитой update-ca-certificates
$ sudo update-ca-certificates Updating certificates in /etc/ssl/certs. rehash: warning: skipping ca-certificates.crt,it does not contain exactly one certificate or CRL 2 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d. Adding debian:russian_trusted_root_ca_pem.pem Adding debian:russian_trusted_sub_ca_pem.pem done. done.
Шаг 5. Проверяем установленные сертификаты
В конце списка должны появиться сертификаты сбербанка
. pkcs11:id=%E1%D1%81%E5%CE%5A%5F%04%AA%D2%E9%B6%9D%66%B1%C5%FA%AC%2C%87;type=cert type: certificate label: Russian Trusted Root CA trust: anchor category: authority pkcs11:id=%D1%E1%71%0D%0B%2D%81%4E%6E%8A%4A%8F%4C%23%B3%4C%5E%AB%69%0B;type=cert type: certificate label: Russian Trusted Sub CA trust: anchor category: authority
Шаг 6. Удаляем загруженные сертификаты из временной папки
Скрипт на загрузку и установку сертификатов
Напишем скрипт для загрузки и установки сертификатов сбербанка для Ubuntu $ nano update_sber_certs.sh
#!/bin/bash wget https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt -P /tmp/ cp /tmp/russian_trusted_*.crt /usr/local/share/ca-certificates/ update-ca-certificates rm /tmp/russian_trusted_*
Выдаем права на запуск. $ chmod +x update_sber_certs.sh .
Запускаем с повышением прав. $ sudo ./update_sber_certs.sh .
SSL сертификат Let’s Encrypt с помощью acme.sh и bind
В этой статье я расскажу о получении wildcard SSL сертификата Let’s Encript при помощи скрипта acme.sh, и сервера bind. Также покажу как настроить автоматическое обновление сертификатов.
Надо сказать, что ранее на своих серверах я использовал для этих целей certbot, который просто устанавливал при помощи пакетного менеджера. Но так как разработчики certbot приняли решение распространять его в виде snap-пакета, а у меня демон snapd полностью из системы выпилен, то пришлось искать альтернативные решения. Об одном из них — acme.sh, я и хочу рассказать.
Оглавление
Настройка BIND
Итак, друзья, давайте мы займемся настройкой возможности динамического обновления сервера DNS bind (о его настройке я уже писал ранее). Во-первых, для этого нам необходимо создать ключи TSIG.
TSIG (transaction signature) – это протокол, позволяющий системе доменных имен аутентифицировать обновления в базе данных
Чтобы создать ключ tsig и файл конфигурации зоны для bind вы можете выполнить shell-скрипт, которым я пользуюсь для экономии времени.
#!/usr/bin/env bash domain='domain.tld' tsig-keygen -a HMAC-SHA512 acme.$domain > acme.$domain.key cat acme.$domain.conf zone "acme.$domain" IN < type master; file "/var/lib/bind/acme.$domain"; allow-query < any; >; update-policy < grant "acme.$domain" name _acme-challenge.acme.$domain. txt; >; >; EOF cat acme.$domain.key >> acme.$domain.conf
В результате его выполнения вы получите два файла: acme.domain.tld.conf — файл конфигурации зоны и acme.domain.tld.key — файлы tsig-ключа. Конфигурационный файл зоны нужно добавить в конфигурационный файл bind /etc/bind/named.conf.local.
В целях безопасности мы не будем добавлять разрешение на обновление основной зоны нашего домена, а добавим еще одну техническую зону для ответа на вызовы dns-01 ACME и уже для нее включим динамические обновления. Ну а в основной зоне мы просто создадим запись CNAME для challenge-записи, которая будет указывать на техническую зону:
; Алиас для записи dns-01 challenge. _acme-challenge CNAME _acme-challenge.acme.domain.tld.
В итоге нам, конечно, необходимо убедиться, что динамические обновления работают. Это можно сделать с помощью утилиты nsupdate. Давайте добавим запись TXT в нашей зоне acme.domain.tld проверим ее добавление.
$ nsupdate -k /etc/bind/acme.domain.tld.key -v > debug yes > server domain.tld > zone acme.domain.tld. > update add test.acme.domain.tld. 86400 TXT "text" > show Outgoing update query: ;; ->>HEADER send Sending update to ::1#53 Outgoing update query: ;; ->>HEADER>HEADER quit $ dig +short -t txt test.acme.domain.tld "text"
После проверки не забудьте удалить TXT запись из зоны ( update delete test.acme.domain.tld. ).
Установка acme.sh
Если у вас все получилось, то можно приступать к установке shell-скрипта acme.sh. Я предпочитаю способ установки при помощи git (на странице скрипта в github есть и другие способы).
sudo -s cd /tmp git clone https://github.com/acmesh-official/acme.sh.git cd acme.sh ./acme.sh --install --cert-home '/etc/letsencript' --email 'account@email.com' cd .. rm -rf acme.sh
Итак, скрипт по умолчанию будет установлен в ~/.acme.sh. Кроме этого будет добавлена задача обновления сертификатов в crontab. Вы можете посмотреть ее при помощи crontab -e.
Получение сертификатов
Ну что же, почти все готово. Чтобы получить сертификаты Let’s Encript при помощи скрипта acme.sh мы будем использовать плагин dns_nsupdate для внесения требуемых записей в зону, обслуживаемую bind. Для выпуска сертификата можно воспользоваться следующим скриптом:
#!/usr/bin/env bash NSUPDATE_SERVER='ns.domain.tld' export NSUPDATE_SERVER NSUPDATE_KEY='/etc/bind/acme.domain.tld.key' export NSUPDATE_KEY . "/root/.acme.sh/acme.sh.env" /root/.acme.sh/acme.sh --set-default-ca --server letsencrypt /root/.acme.sh/acme.sh --issue -d 'domain.tld' -d '*.domain.tld' --challenge-alias acme.domain.tld --dns dns_nsupdate --renew-hook '/root/.acme.sh/renew-hook.sh'
Если все прошло успешно, то выпущенные сертификаты можно будет найти в каталоге, который вы указали в параметре —cert-home при установке скрипта ( по умолчанию ~/.acme.sh/domain.tld ). Ну а содержимое скрипта, которое будет выполнено после обновления сертификатов предлагаю вам написать самостоятельно. Обычно — это просто перезапуск сервисов, которые используют выпущенные сертификаты.
На этом статья об автоматизации получения SSL сертификатов Let’s Encrypt с помощью acme.sh и bind завершена. Как обычно я жду ваши вопросы и замечания в комментариях. Удачи!