Page 1 of 1

Let's Encrypt API

Posted: Thu Jan 12, 2017 8:09 am
by snake
Привет, понадобилось добавить ssl для большого кол-во доменов, через веб интерфейс не вариант это делать, очень долго, поэтому накидал по быстрому скрипт на php. Но возникла проблема при добавлении сертификатов почему-то сильно грузится сервер и nginx падает.
nginx dead but pid file exists
Пробовал напрямую отправлять запросы на v-add-letsencrypt-domain или добавлять расписание через v-schedule-letsencrypt-domain, эффект один сервер ложится.

Как можно добавить большое кол-во сертификатов автоматически?

Код скрипта:

Code: Select all

foreach ($form->domains as $domain) {
    // Server credentials
    $vst_hostname = $servers[$skey]['address'];
    $vst_username = $servers[$skey]['users'][0][0];
    $vst_password = $servers[$skey]['users'][0][1];
    $vst_returncode = 'yes';
    $vst_command = 'v-add-letsencrypt-domain';

    // New Domain
    $username = $servers[$skey]['users'][$ukey][0];

    // Prepare POST query
    $postvars = array(
        'user' => $vst_username,
        'password' => $vst_password,
        'returncode' => $vst_returncode,
        'cmd' => $vst_command,
        'arg1' => $username,
        'arg2' => $domain,
        'arg3' => 'www.'.$domain,
        'arg4' => 'no',
    );

    // Send POST query via cURL
    $postdata = http_build_query($postvars);
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'https://' . $vst_hostname . ':8083/api/');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
    $answer = curl_exec($curl);
}
Нагрузка во время работы скрипта
Image

Нагрузка после перезагрузки
Image

Re: Let's Encrypt API

Posted: Thu Jan 12, 2017 12:55 pm
by snake
Почему-то указание аргумента [RESTART] в "no" не работает.