Ko'pincha biz SSL sertifikatlari bilan ishlashimiz kerak. Keling, sertifikat yaratish va o'rnatish jarayonini eslaylik (ko'pchilik uchun umumiy holatda).
Provayderni toping (SSL sotib olishimiz mumkin bo'lgan sayt).
CSR yaratish.
Uni provayderingizga yuboring.
Domen egaligini tasdiqlang.
Sertifikat oling.
Sertifikatni kerakli shaklga o'zgartiring (ixtiyoriy). Misol uchun, pemdan PKCS # 12 ga.
Sertifikatni veb-serverga o'rnating.
Nisbatan tez, murakkab va tushunarli emas. Agar bizda ko'pi bilan o'nta loyiha bo'lsa, bu variant juda mos keladi. Agar ular ko'proq bo'lsa va ular kamida uchta muhitga ega bo'lsa-chi? Klassik ishlab chiqarish - sahnalashtirish - ishlab chiqarish. Bunday holda, ushbu jarayonni avtomatlashtirish haqida o'ylash arziydi. Men muammoni biroz chuqurroq o'rganishni va sertifikatlarni yaratish va saqlashga sarflanadigan vaqtni yanada kamaytiradigan yechim topishni taklif qilaman. Maqolada muammoning tahlili va takrorlash bo'yicha kichik qo'llanma mavjud.
Oldindan band qilishimga ijozat bering: kompaniyamizning asosiy ixtisosligi .net va shunga mos ravishda IIS va Windows bilan bog'liq boshqa mahsulotlar. Shuning uchun, ACME mijozi va uning uchun barcha harakatlar Windows-dan foydalanish nuqtai nazaridan ham tavsiflanadi.
Bu kimga tegishli va ba'zi dastlabki ma'lumotlar
K kompaniyasi muallif tomonidan taqdim etilgan. URL (masalan): company.tld
X loyihasi - bu bizning loyihalarimizdan biri bo'lib, u ustida ishlayotganda men sertifikatlar bilan ishlashda hali ham vaqtni tejashga o'tishimiz kerak degan xulosaga keldim. Ushbu loyiha to'rtta muhitga ega: ishlab chiqish, sinov, sahnalashtirish va ishlab chiqarish. Dev va test biz tomonda, sahnalashtirish va ishlab chiqarish mijoz tomonida.
Loyihaning o'ziga xos xususiyati shundaki, u subdomenlar sifatida mavjud bo'lgan ko'p sonli modullarga ega.
Ishlab chiqarish uchun sotib olingan joker sertifikat ishlatiladi, bu erda hech qanday savol tug'ilmaydi. Lekin u faqat subdomenning birinchi darajasini qamrab oladi. Shunga ko'ra, agar *.projectX.tld uchun sertifikat mavjud bo'lsa, u staging.projectX.tld uchun ishlaydi, lekin modul1.staging.projectX.tld uchun emas. Lekin qandaydir tarzda men alohida sotib olmoqchi emasman.
Va bu faqat bitta kompaniyaning bitta loyihasi misoliga asoslanadi. Va, albatta, bir nechta loyiha mavjud.
Bu muammoni hal qilish uchun hamma uchun umumiy sabablar quyidagicha ko'rinadi:
Loyihalarning va umuman kompaniyaning ichki ehtiyojlari uchun SSLni chiqarish va saqlash jarayonini osonlashtirish.
Sertifikat yozuvlarini markazlashtirilgan saqlash, bu DNS-dan foydalangan holda domenni tekshirish va keyinchalik avtomatik yangilash muammosini qisman hal qiladi, shuningdek, mijozning ishonchi masalasini hal qiladi. Shunga qaramay, sherik/ijrochi kompaniya serveridagi CNAME uchinchi tomon manbasiga qaraganda ishonchliroq.
Xo'sh, nihoyat, bu holatda "bo'lmagandan ko'ra ega bo'lgani yaxshi" iborasi juda mos keladi.
SSL provayderini tanlash va tayyorgarlik bosqichlari
Bepul SSL sertifikatlarining mavjud variantlari orasida cloudflare va letsencrypt ko'rib chiqildi. Buning uchun DNS (va ba'zi boshqa loyihalar) cloudflare tomonidan joylashtirilgan, ammo men ularning sertifikatlaridan foydalanishni yoqtirmayman. Shuning uchun letsencryptdan foydalanishga qaror qilindi.
Joker SSL sertifikatini yaratish uchun siz domen egaligini tasdiqlashingiz kerak. Ushbu protsedura ba'zi DNS yozuvlarini (TXT yoki CNAME) yaratish va sertifikat berishda uni tekshirishni o'z ichiga oladi. Linuxda yordamchi dastur mavjud - sertifikat, bu sizga ushbu jarayonni qisman (yoki ba'zi DNS provayderlari uchun to'liq) avtomatlashtirish imkonini beradi. Windows uchun topildi va tasdiqlandi Men hal qilgan ACME mijoz variantlari WinACME.
Va domen uchun rekord yaratildi, sertifikat yaratishga o'tamiz:
Bizni oxirgi xulosa qiziqtiradi, ya'ni joker belgilar sertifikatini berish uchun domen egaligini tasdiqlashning mavjud variantlari:
DNS yozuvlarini qo'lda yaratish (avtomatik yangilash qo'llab-quvvatlanmaydi)
Acme-dns server yordamida DNS yozuvlarini yaratish (bu haqida ko'proq o'qishingiz mumkin shu yerda.
O'z skriptingiz yordamida DNS yozuvlarini yaratish (certbot uchun cloudflare plaginiga o'xshash).
Bir qarashda, uchinchi nuqta juda mos keladi, ammo agar DNS provayderi ushbu funktsiyani qo'llab-quvvatlamasa nima bo'ladi? Ammo bizga umumiy holat kerak. Ammo umumiy holat CNAME yozuvlaridir, chunki hamma ularni qo'llab-quvvatlaydi. Shuning uchun biz 2-bandda to'xtab, ACME-DNS serverimizni sozlashga o'tamiz.
ACME-DNS serverini sozlash va sertifikat berish jarayoni
Masalan, men 2nd.pp.ua domenini yaratdim va kelajakda undan foydalanaman.
Majburiy talab Serverning to'g'ri ishlashi uchun uning domeni uchun NS va A yozuvlarini yaratish kerak. Va men duch kelgan birinchi noxush lahza shundaki, bulutlar (hech bo'lmaganda bepul foydalanish rejimida) bir vaqtning o'zida bir xil xost uchun NS va A yozuvlarini yaratishga imkon bermaydi. Bu muammo emas, lekin bog'langan holda bu mumkin. Qo'llab-quvvatlash, ularning paneli buni qilishga ruxsat bermasligini aytdi. Muammo yo'q, keling ikkita yozuv yarataylik:
acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.
Ushbu bosqichda bizning uy egasi hal qilishi kerak acmens.2nd.pp.ua.
$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of data
Ammo acme.2nd.pp.ua u hal etilmaydi, chunki unga xizmat ko'rsatadigan DNS server hali ishlamayapti.
Yozuvlar yaratildi, keling, ACME-DNS serverini sozlash va ishga tushirishga o'tamiz. U mening ubuntu serverimda yashaydi docker konteyner, lekin uni golang mavjud bo'lgan har qanday joyda ishlatishingiz mumkin. Windows ham juda mos keladi, lekin men hali ham Linux serverini afzal ko'raman.
Kerakli katalog va fayllarni yarating:
$ mkdir config
$ mkdir data
$ touch config/config.cfg
Sevimli matn muharriringiz bilan vim dan foydalanamiz va namunani config.cfg ichiga joylaymiz konfiguratsiya.
Muvaffaqiyatli ishlash uchun umumiy va api bo'limlarini tuzatish kifoya:
ACME-DNS serveriga havola haqida so'ralganda, javobda yaratilgan serverning URL manzilini (https) kiriting. acme-dns serverining URL manzili: https://acme.2nd.pp.ua
Ochilishda mijoz mavjud DNS serveriga qo'shilishi kerak bo'lgan yozuvni chiqaradi (bir martalik protsedura):
[INFO] Creating new acme-dns registration for domain 1nd.pp.ua
Domain: 1nd.pp.ua
Record: _acme-challenge.1nd.pp.ua
Type: CNAME
Content: c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.
Note: Some DNS control panels add the final dot automatically.
Only one is required.
Biz kerakli yozuvni yaratamiz va uning to'g'ri tuzilganligiga ishonch hosil qilamiz:
Biz winacme-da kerakli yozuvni yaratganimizni tasdiqlaymiz va sertifikat yaratish jarayonini davom ettiramiz:
Mijoz sifatida certbotdan qanday foydalanish tasvirlangan shu yerda.
Bu sertifikat yaratish jarayonini yakunlaydi, uni veb-serverga o'rnatishingiz va undan foydalanishingiz mumkin. Agar sertifikat yaratishda siz rejalashtiruvchida vazifa yaratsangiz, kelajakda sertifikatni yangilash jarayoni avtomatik ravishda amalga oshiriladi.