Умови:
Є контрольований DNS server (BIND) з можливістю оновлювати записи з
використанням nsupdate
RFC 2136.
Є
TrueNAS SCALE
Server Dragonfish-24.04.2.5.
Задача:
Додати автоматично оновлюваний сертифікат безпеки від
Let’s Encrypt, відповідно до стандартів ACME (RFC 8555).
Основі матеріали:
- Howto: ACME DNS-Authenticator shell script using acmesh project
-
TrueNAS SCALE - Adding LetsEncrypt Certificates
Дії:
-
Створити ZFS dataset: system_tools.
Повний шлях монтування з pool mdata - /mnt/mdata/system_tools.
- Отримати доступ до консолі, через GUI або SSH.
- Створити робочу теку /mnt/mdata/system_tools.
-
Завантажити та встановити
acme.sh до теки /mnt/mdata/system_tools/acme.
mkdir /mnt/mdata/system_tools/acme
cd /mnt/mdata/system_tools/acme
git clone --depth 1 https://github.com/acmesh-official/acme.sh.git
-
Створити скрипт dns_acme.sh на основі
публікації, де змінити данні для змінних NSUPDATE_SERVER, NSUPDATE_KEY на власні:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
#!/bin/bash ### VARIABLES # Logfile SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) LOGFILE="${SCRIPT_DIR}/dns_acme.log" # Source acmesh scripts export ACME_FOLDER="/mnt/mdata/system_tools/acme/acme.sh" # Change this path to reflect yourf environment export ACME_DNSAPI="${ACME_FOLDER}/dnsapi" export PROVIDER="dns_nsupdate" # Find provider script in 'dnsapi' folder export NSUPDATE_SERVER="DNS_SERVER" export NSUPDATE_KEY="${SCRIPT_DIR}/.nsupdate.key" source "${ACME_FOLDER}/acme.sh" > /dev/null 2>&1 source "${ACME_DNSAPI}/${PROVIDER}.sh" > /dev/null 2>&1 # Dns API authentication. See details for your provider https://github.com/acmesh-official/acme.sh/wiki/dnsapi #export username="example@gmail.com" #export password="somePass" ### FUNCTIONS _log_output() { echo `date "+[%a %b %d %H:%M:%S %Z %Y]"`" $1" >> ${LOGFILE} } ### MAIN _log_output "INFO Script started." # File/folder validation if [ ! -d "${ACME_FOLDER}" ]; then _log_output "ERROR Invalid acme folder: ${ACME_FOLDER}" return 1 fi if [ ! -f "${LOGFILE}" ]; then touch "${LOGFILE}" chmod 500 "${LOGFILE}" fi # Main if [ "${1}" == "set" ]; then ${PROVIDER}_add "${3}" "${4}" >> ${LOGFILE} 2>/dev/null elif [ "${1}" == "unset" ]; then ${PROVIDER}_rm "${3}" "${4}" >> ${LOGFILE} 2>/dev/null fi _log_output "INFO Script finished." -
Створити файл /mnt/mdata/system_tools/acme/.nsupdate.key, де secret
можна отримати командую "openssl rand -base64 64"
key "some-key" { algorithm hmac-sha512; secret " … =="; };
- Змінити права доступу до файлу: chmod 600 /mnt/mdata/system_tools/acme/.nsupdate.key
- Додати ACME DNS-Authenticators dns_acme.
dns_acme
- Зробити налаштування відповідно до відео інструкції. з використанням dns_acme при створені сертифікату.
Немає коментарів:
Дописати коментар