Көмек

acme.sh арқылы Auto SSL

acme.sh — тәуелділіксіз бір shell-скрипт, кез келген Linux, FreeBSD және контейнерлерде жұмыс істейді. Ол сыртқы аккаунт байланыстыруы (EAB) бар ACME-ні толық қолдайды, сондықтан Auto SSL-ге бірден жарайды. Осы нұсқаулықты ISPmanager, FastPanel, cPanel және BitrixVM панельдеріне арналған мақалаларға негіз ретінде де қолданамыз.

Кілттерді қайдан алуға болады

  1. 1host.kz/bill жеке кабинетінде «Auto SSL (Sectigo ACME)» қызметін ашыңыз (рәсімдеу — Auto SSL бетінде).
  2. «Configure Now» («Баптау») түймесін басып, домендерді енгізіңіз: әдеттегілерін — «Single Domains» өрісіне (www және www-сыз — бір домен), wildcard — «Wildcard Domains» өрісіне.
  3. 5–30 секундтан кейін карточкада ACME account ID, EAB MAC ID, EAB MAC key және Server URL пайда болады.

Әрі қарай: Server URL — https://acme.sectigo.com/v2/DV (барлығына ортақ), YOUR_EAB_KID — EAB MAC ID, YOUR_EAB_HMAC_KEY — EAB MAC key. Оларды құпиясөз сияқты сақтаңыз.

acme.sh орнату

root атынан (немесе сайт каталогтарына және веб-серверді қайта жүктеуге құқығы бар пайдаланушы атынан):

curl https://get.acme.sh | sh -s [email protected]
source ~/.bashrc
acme.sh --version

Орнатқыш скриптті ~/.acme.sh/ ішіне салып, күн сайын мерзімдерді тексеріп, сертификаттарды ұзартатын cron тапсырмасын қосады. Тексеру: crontab -l | grep acme.sh.

EAB кілттерімен аккаунт тіркеу

acme.sh --register-account --server https://acme.sectigo.com/v2/DV \
  --eab-kid YOUR_EAB_KID --eab-hmac-key YOUR_EAB_HMAC_KEY

Бұл бір рет жасалады: acme.sh аккаунтты ~/.acme.sh/ca/acme.sectigo.com/ ішінде сақтайды, кілттер қайта қажет емес. Әр командада --server жазбау үшін Sectigo-ны әдепкі сервер етіңіз:

acme.sh --set-default-ca --server https://acme.sectigo.com/v2/DV

Сертификат шығару

webroot арқылы — веб-сервер /.well-known/acme-challenge/ беретін сайт каталогы:

acme.sh --issue --server https://acme.sectigo.com/v2/DV \
  -d example.kz -d www.example.kz -w /var/www/html

Басқа тексеру режимдері — -w /var/www/html орнына:

  • --nginx — тексеру кезінде acme.sh nginx конфигін уақытша өзі түзетеді;
  • --apache — Apache үшін де солай;
  • --standalone — 80-портта өз серверін көтереді (бұл уақытта веб-серверді тоқтату керек).

Бір командадағы барлық домендер жазылымда болуы және осы серверге бағытталуы тиіс. 80-порт ашық болуы керек.

Сертификат орнату және веб-серверді қайта жүктеу

~/.acme.sh/ ішіндегі файлдарға тікелей сілтеме жасамаңыз — олардың құрылымы өзгеруі мүмкін. Сертификатты тұрақты жолдарға көшіріп, қайта жүктеу командасын көрсетіңіз; acme.sh оларды есте сақтап, әр ұзартудан кейін қайталайды:

mkdir -p /etc/ssl/example.kz
acme.sh --install-cert -d example.kz \
  --key-file       /etc/ssl/example.kz/privkey.pem \
  --fullchain-file /etc/ssl/example.kz/fullchain.pem \
  --reloadcmd      "systemctl reload nginx"

Веб-сервер конфигінде:

# nginx
ssl_certificate     /etc/ssl/example.kz/fullchain.pem;
ssl_certificate_key /etc/ssl/example.kz/privkey.pem;

# Apache (reloadcmd — "systemctl reload apache2" немесе "httpd")
SSLCertificateFile    /etc/ssl/example.kz/fullchain.pem
SSLCertificateKeyFile /etc/ssl/example.kz/privkey.pem

DNS арқылы wildcard

*.example.kz үшін КО доменді TXT-жазба арқылы тексереді (dns-01), сондықтан acme.sh-ке DNS-провайдердің API-іне қолжетімділік қажет. Cloudflare мысалы (acme.sh 150-ден астам провайдерді қолдайды, тізім — wiki-дегі dnsapi бетінде):

export CF_Token="аймақты_өңдеу_құқығы_бар_токен"
export CF_Account_ID="аккаунт_id"
acme.sh --issue --server https://acme.sectigo.com/v2/DV --dns dns_cf \
  -d example.kz -d '*.example.kz'

Тіркелгі деректері ~/.acme.sh/account.conf ішінде сақталады, ұзарту сіздің қатысуыңызсыз өтеді. Доменнің DNS-і біздің ns1/ns2.1host.kz серверлерінде болса, қолдау қызметіне жазыңыз — DNS-тексеруді баптауға көмектесеміз. Қолмен режимді (--dns провайдерсіз, TXT-жазбаны қолмен қосу) Auto SSL үшін ұсынбаймыз: әр ұзартуда жазбаны қайта өзгертуге тура келеді.

Тексеру және ұзарту

Сертификаттар тізімі және келесі ұзарту күндері:

acme.sh --list

Сайттың Sectigo сертификатын беретінін тексеру:

echo | openssl s_client -connect example.kz:443 -servername example.kz 2>/dev/null \
  | openssl x509 -noout -issuer -dates

issuer ішінде O = Sectigo Limited болуы керек. Ұзартуды күнделікті cron тапсырмасы жасайды: сертификат мерзімі бітуден шамамен 30 күн бұрын жаңартылады, содан кейін --reloadcmd орындалады. Мәжбүрлеп ұзартып, бүкіл тізбекті тексеру:

acme.sh --renew -d example.kz --force

Журнал — ~/.acme.sh/acme.sh.log. Жазылым белсенді болғанда (ұзарту шоты жыл аяқталардан 14 күн бұрын келеді) ештеңе істеудің қажеті жоқ. Сұрақтар — жеке кабинет арқылы ONEHOST қолдау қызметіне, тәулік бойы жауап береміз.

Сұрақтарыңыз бар болса, жазыңыз