Автоматизируйте установку SSL-сертификата Letsencrypt с помощью команды PHP shell_exec через acme.sh защелкивающийся пакет

#php #ssl #lets-encrypt #shell-exec #acme.sh

#php #ssl #позволяет зашифровать #shell-exec #acme.sh

Вопрос:

Я устанавливаю позволяет шифровать сертификаты с помощью acme.sh защелкивающийся пакет

https://github.com/acmesh-official/acme.sh

Мне интересно, есть ли какой-либо способ автоматизировать установку сертификата с помощью команды PHP default shell_exec().

Эта команда оболочки, используемая для получения сертификатов, отлично работает при входе в систему через SSH

acme.sh —проблема —dns dns_gd -d example.com -д *.example.com

Однако, если я вызываю ту же команду через PHP shell_exec, она всегда выдает ошибку

 $domainName = 'example.com';
$initCommand = "acme.sh --issue --dns dns_gd -d $domainName -d *.$domainName";
$output = shell_exec("$initCommand 2>amp;1 | tee -a /var/www/html/sshout.txt 2>/dev/null >/dev/null amp;");
 

sshout.txt — Результат, который я получаю на sshout, выглядит следующим образом

 ssh: 1: /home/ubuntu/.acme.sh: Permission denied
sudo: no tty present and no askpass program specified
 

Можно ли получить сертификаты таким образом?

Или любой другой способ автоматизировать это с помощью PHP? установив cron или создав скрипт bash и вызвав его из PHP?

Я запускаю PHP 7.2 в ubuntu 18 на сервере apache.

Ответ №1:

У вас должно быть разрешение и правильный путь для запуска скрипта bash. Я предполагаю, что эта тема — то, что вам нужно PHP-скрипт не может запустить bash-скрипт. sh: Разрешение отклонено

другой способ — использовать acmephp