acme.sh арқылы Auto SSL
acme.sh — тәуелділіксіз бір shell-скрипт, кез келген Linux, FreeBSD және контейнерлерде жұмыс істейді. Ол сыртқы аккаунт байланыстыруы (EAB) бар ACME-ні толық қолдайды, сондықтан Auto SSL-ге бірден жарайды. Осы нұсқаулықты ISPmanager, FastPanel, cPanel және BitrixVM панельдеріне арналған мақалаларға негіз ретінде де қолданамыз.
Кілттерді қайдан алуға болады
- 1host.kz/bill жеке кабинетінде «Auto SSL (Sectigo ACME)» қызметін ашыңыз (рәсімдеу — Auto SSL бетінде).
- «Configure Now» («Баптау») түймесін басып, домендерді енгізіңіз: әдеттегілерін — «Single Domains» өрісіне (
wwwжәнеwww-сыз — бір домен), wildcard — «Wildcard Domains» өрісіне. - 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 қолдау қызметіне, тәулік бойы жауап береміз.