[Решено] acme выпуск сертификата для nginx

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
bars
Сообщения: 1007
ОС: BSD/LINUX

[Решено] acme выпуск сертификата для nginx

Сообщение bars »

Привет.
Решил попробовать выпуск сертификата с помощью ascme.sh
Установил acme, сделал такой скрипт генерации сертификата.

Код: Выделить всё

#!/bin/sh
echo "##############"
echo "Генерация SSL."
echo "0 ВЫХОД"

while true;do
echo -n Наберите 0 или домен:; read DOM

if [ "0" = "$DOM" ];then
   break
fi

mkdir /etc/acme.sh/$DOM
chown -R acme:newprod_max /etc/acme.sh/$DOM
su -m acme -c "/usr/local/sbin/acme.sh --issue -d $DOM -d www.$DOM -w /usr/local/www/cert"
su -m acme -c "/usr/local/sbin/acme.sh --install-cert -d $DOM -d www.$DOM --key-file /etc/acme.sh/$DOM/privkey.pem --cert-file /etc/acme.sh/$DOM/cert.pem --fullchain-file /etc/acme.sh/$DOM/fullchain.pem --reloadcmd  "touch /var/db/acme/.restart_nginx""

break
done
Запускаю скрипт генерации под рутом, но в скрипте указал что бы генерация шла от пользователя acme.

Вообщем ввожу домен my.dom.local и вижу такой выхлоп.

Код: Выделить всё

/usr/local/sbin/acme.sh: cannot open /root/.acme.sh/my.dom.local_ecc/my.dom.local.conf: No such file or directory
grep: /root/.acme.sh/my.dom.local_ecc/my.dom.local.conf: No such file or directory
grep: /root/.acme.sh/my.dom.local_ecc/my.dom.local.conf: No such file or directory
/usr/local/sbin/acme.sh: cannot create /root/.acme.sh/my.dom.local_ecc/my.dom.local.conf: No such file or directory
grep: /root/.acme.sh/my.dom.local_ecc/my.dom.local.conf: No such file or directory
[пятница,  8 декабря 2023 г. 10:08:06 (+03)] Using CA: https://acme.zerossl.com/v2/DV90
mkdir: /root/.acme.sh: Permission denied
mkdir: /root/.acme.sh: Permission denied
mkdir: /root/.acme.sh: Permission denied
[пятница,  8 декабря 2023 г. 10:08:06 (+03)] Can not create path: /root/.acme.sh/ca/acme.zerossl.com/v2/DV90
[пятница,  8 декабря 2023 г. 10:08:06 (+03)] Create account key error.
[пятница,  8 декабря 2023 г. 10:08:06 (+03)] Create account key error.
[пятница,  8 декабря 2023 г. 10:08:06 (+03)] Please add '--debug' or '--log' to check more details.
[пятница,  8 декабря 2023 г. 10:08:06 (+03)] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh
[пятница,  8 декабря 2023 г. 10:08:06 (+03)] The domain 'my.dom.local' is not a cert name. You must use the cert name to specify the cert to install.
[пятница,  8 декабря 2023 г. 10:08:06 (+03)] Can not find path:'/root/.acme.sh/my.dom.local'
У пользователя acme убран системный шел (указан /usr/sbin/nologin).
Что я делаю не так, почему он в рутовой директории пытается создать.
Последний раз редактировалось bars 09.12.2023 09:50, всего редактировалось 1 раз.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
Dionysius
Сообщения: 523
ОС: Manjaro

Re: acme выпуск сертификата для nginx

Сообщение Dionysius »

Похоже, при первом запуске из-под рута он установился в папку root.
Попробуйте под рутом

Код: Выделить всё

# ./acme.sh --uninstall
А затем под обычным пользователем

Код: Выделить всё

$ ./acme.sh --install
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1007
ОС: BSD/LINUX

Re: acme выпуск сертификата для nginx

Сообщение bars »

Разобрался.
Указал его родную директорию --home /var/db/acme/certs
И указал от кого от какого выпустить сертификат --server letsencrypt

Код: Выделить всё

su -m acme -c "/usr/local/sbin/acme.sh --issue -d $DOM -d www.$DOM -w /usr/local/www/cert --home /var/db/acme/certs --server letsencrypt"
Добавлено (10:56):
не пойму, раньше когда certbot генерил сертификаты делал 3 параметра в nginx
ssl_certificate --cert-file
ssl_certificate_key это --key-file

Тут какой указывать не пойму?
ssl_trusted_certificate

Или от ssl_trusted_certificate отказаться и в параметре ssl_certificate --fullchain-file использовать, как правильнее будет?
Добавлено (11:04):
Вообщем как я понимаю, для реализации OCSP stapling можно отдельно не делать ssl_trusted_certificate если в ssl_certificate указан --fullchain-file.
Добавлено (11:22):
Проверяем в ручную ocsp stapling

openssl s_client -connect wikipedia.org:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > wikipedia.pem
И проверяем выдачу, должен быть текст.
openssl x509 -noout -ocsp_uri -in wikipedia.pem
Добавлено (11:23):
Также есть непонимание, почему при генерации сертификата не создался файл "touch /var/db/acme/.restart_nginx".

Код: Выделить всё

su -m acme -c "/usr/local/sbin/acme.sh --install-cert -d $DOM -d www.$DOM --key-file /etc/acme.sh/$DOM/privkey.pem --cert-file /etc/acme.sh/$DOM/cert.pem --fullchain-file /etc/acme.sh/$DOM/fullchain.pem --reloadcmd  "touch /var/db/acme/.restart_nginx""
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1007
ОС: BSD/LINUX

Re: acme выпуск сертификата для nginx

Сообщение bars »

Код: Выделить всё

root@mysite:/ # su -m acme -c "/usr/local/sbin/acme.sh --install-cert -d my.site.local -d www.my.site.local --key-file /etc/acme.sh/my.site.local/privkey.pem --cert-file /etc/acme.sh/my.site.local/cert.pem --fullchain-file /etc/acme.sh/my.site.local/fullchain.pem --home /var/db/acme/certs --reloadcmd "touch /var/db/acme/.restart_nginx" --log /var/log/acme.sh.log"
[пятница,  8 декабря 2023 г. 15:56:47 (+03)] The domain 'my.site.local' seems to have a ECC cert already, lets use ecc cert.
[пятница,  8 декабря 2023 г. 15:56:47 (+03)] Installing cert to: /etc/acme.sh/my.site.local/cert.pem
[пятница,  8 декабря 2023 г. 15:56:47 (+03)] Installing key to: /etc/acme.sh/my.site.local/privkey.pem
[пятница,  8 декабря 2023 г. 15:56:47 (+03)] Installing full chain to: /etc/acme.sh/my.site.local/fullchain.pem
[пятница,  8 декабря 2023 г. 15:56:47 (+03)] Run reload cmd: touch
usage: touch [-A [-][[hh]mm]SS] [-achm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]]
       [-d YYYY-MM-DDThh:mm:SS[.frac][tz]] file ...
[пятница,  8 декабря 2023 г. 15:56:47 (+03)] Reload error for :
Непонятно почему --reloadcmd "touch /var/db/acme/.restart_nginx" так срабатывает.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 904
ОС: debian, fedora (i3-wm)

Re: acme выпуск сертификата для nginx

Сообщение olecya »

bars писал:
08.12.2023 10:49

Код: Выделить всё

su -m acme -c "/usr/local/sbin/acme.sh --install-cert -d $DOM -d www.$DOM --key-file /etc/acme.sh/$DOM/privkey.pem --cert-file /etc/acme.sh/$DOM/cert.pem --fullchain-file /etc/acme.sh/$DOM/fullchain.pem --reloadcmd  "touch /var/db/acme/.restart_nginx""
Быстрым взглядом, я не понимаю что тут делается, но есть ошибка в двойных кавычках. Интерпретатор считывает аргументы в следующем порядке:

Код: Выделить всё

su
-m
acme
-c
"/usr/local/sbin/acme.sh --install-cert -d $DOM -d www.$DOM --key-file /etc/acme.sh/$DOM/privkey.pem --cert-file /etc/acme.sh/$DOM/cert.pem --fullchain-file /etc/acme.sh/$DOM/fullchain.pem --reloadcmd  "
touch
/var/db/acme/.restart_nginx""
Можете заметить что последний аргумент заключает в конце пустую строку, экранированную двумя двойными кавычками, вместо того чтобы охватить и команду и путь.
Это не будет работать так как задумано. Внутренние кавычки замените на одинарные:

Shell

su -m acme -c "/usr/local/sbin/acme.sh --install-cert -d $DOM -d www.$DOM --key-file /etc/acme.sh/$DOM/privkey.pem --cert-file /etc/acme.sh/$DOM/cert.pem --fullchain-file /etc/acme.sh/$DOM/fullchain.pem --reloadcmd 'touch /var/db/acme/.restart_nginx'"
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1007
ОС: BSD/LINUX

Re: acme выпуск сертификата для nginx

Сообщение bars »

olecya писала:
08.12.2023 16:44
Можете заметить что последний аргумент заключает в конце пустую строку, экранированную двумя двойными кавычками, вместо того чтобы охватить и команду и путь.
Это не будет работать так как задумано. Внутренние кавычки замените на одинарные:
Спасибо огромное, выручили.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали: