MYCSS

2024-11-20

Note. TrueNAS Scale. ACME RFC 2136. Howto: ACME DNS-Authenticator shell script using acmesh project

Умови:

Є контрольований DNS server (BIND) з можливістю оновлювати записи з використанням nsupdate RFC 2136.
Є TrueNAS SCALE Server Dragonfish-24.04.2.5.

Задача:

Додати автоматично оновлюваний сертифікат безпеки  від Let’s Encrypt,  відповідно до стандартів ACME (RFC 8555).

Основі матеріали:

Дії:

  1. Створити ZFS dataset: system_tools.
    Повний шлях монтування з pool mdata - /mnt/mdata/system_tools.
  2. Отримати доступ до консолі, через GUI або SSH.
  3. Створити робочу теку /mnt/mdata/system_tools.
  4. Завантажити та встановити 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

  5. Створити скрипт dns_acme.sh на основі публікації, де змінити данні для змінних NSUPDATE_SERVER, NSUPDATE_KEY на власні:

    #!/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."
    view raw dns_acme.sh hosted with ❤ by GitHub

  6. Створити файл /mnt/mdata/system_tools/acme/.nsupdate.key, де secret можна отримати командую "openssl rand -base64 64"
    key "some-key" {
        algorithm hmac-sha512;
        secret " … ==";
    };
  7. Змінити права доступу до файлу: chmod 600 /mnt/mdata/system_tools/acme/.nsupdate.key
  8. Додати ACME DNS-Authenticators dns_acme.

    dns_acme


  9. Зробити налаштування відповідно до відео інструкції. з використанням dns_acme при створені сертифікату.

Немає коментарів:

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready