Seringkali kita harus bekerja dengan sertifikat SSL. Mari kita ingat proses pembuatan dan pemasangan sertifikat (umumnya sebagian besar).
Temukan penyedianya (situs tempat kita bisa membeli SSL).
Menghasilkan CSR.
Kirimkan ke penyedia Anda.
Verifikasi kepemilikan domain.
Dapatkan sertifikat.
Konversikan sertifikat ke formulir yang diperlukan (opsional). Misalnya dari pem ke PKCS #12.
Instal sertifikat di server web.
Relatif cepat, tidak ribet dan mudah dimengerti. Opsi ini cukup cocok jika kita memiliki maksimal sepuluh proyek. Bagaimana jika jumlahnya lebih banyak, dan mereka memiliki setidaknya tiga lingkungan? Pengembang klasik - pementasan - produksi. Dalam hal ini, ada baiknya memikirkan untuk mengotomatiskan proses ini. Saya mengusulkan untuk mempelajari masalah ini lebih dalam dan menemukan solusi yang selanjutnya akan meminimalkan waktu yang dihabiskan untuk membuat dan memelihara sertifikat. Artikel ini akan berisi analisis masalah dan panduan kecil untuk pengulangan.
Izinkan saya melakukan reservasi terlebih dahulu: spesialisasi utama perusahaan kami adalah .net, dan karenanya, IIS dan produk terkait Windows lainnya. Oleh karena itu, klien ACME dan semua tindakannya juga akan dijelaskan dari sudut pandang penggunaan Windows.
Untuk siapa ini relevan dan beberapa data awal
Perusahaan K diwakili oleh penulis. URL (misalnya): perusahaan.tld
Proyek X adalah salah satu proyek kami, saat mengerjakannya saya sampai pada kesimpulan bahwa kami masih perlu beralih ke penghematan waktu maksimum saat bekerja dengan sertifikat. Proyek ini memiliki empat lingkungan: pengembangan, pengujian, pementasan, dan produksi. Pengembangan dan pengujian ada di pihak kami, pementasan dan produksi ada di sisi klien.
Fitur khusus dari proyek ini adalah ia memiliki sejumlah besar modul yang tersedia sebagai subdomain.
Untuk produksi, sertifikat wildcard yang dibeli digunakan, tidak ada pertanyaan yang muncul di sini. Tapi itu hanya mencakup subdomain tingkat pertama. Oleh karena itu, jika ada sertifikat untuk *.projectX.tld, maka sertifikat tersebut akan berfungsi untuk staging.projectX.tld, tetapi tidak untuk module1.staging.projectX.tld. Tapi entah kenapa saya tidak mau beli yang terpisah.
Dan ini hanya berdasarkan contoh satu proyek dari satu perusahaan. Dan tentu saja ada lebih dari satu proyek.
Alasan umum bagi setiap orang untuk mengatasi masalah ini terlihat seperti ini:
Memfasilitasi proses penerbitan dan pemeliharaan SSL untuk kebutuhan internal proyek dan perusahaan secara keseluruhan.
Penyimpanan terpusat dari catatan sertifikat, yang sebagian memecahkan masalah verifikasi domain menggunakan DNS dan pembaruan otomatis berikutnya, dan juga memecahkan masalah kepercayaan klien. Namun, CNAME di server perusahaan mitra/pemain lebih dapat dipercaya dibandingkan pada sumber daya pihak ketiga.
Dan akhirnya, dalam hal ini ungkapan βlebih baik memiliki daripada tidak memilikiβ sangat cocok.
Memilih Penyedia SSL dan Langkah Persiapannya
Di antara opsi yang tersedia untuk sertifikat SSL gratis, cloudflare dan letsencrypt telah dipertimbangkan. DNS untuk ini (dan beberapa proyek lainnya) dihosting oleh cloudflare, tapi saya bukan penggemar menggunakan sertifikat mereka. Oleh karena itu, diputuskan untuk menggunakan letsencrypt.
Untuk membuat sertifikat SSL wildcard, Anda perlu mengonfirmasi kepemilikan domain. Prosedur ini melibatkan pembuatan beberapa data DNS (TXT atau CNAME), dan kemudian memverifikasinya saat menerbitkan sertifikat. Linux memiliki utilitas - certbot, yang memungkinkan Anda mengotomatiskan sebagian (atau seluruhnya untuk beberapa penyedia DNS) proses ini. Untuk Windows dari ditemukan dan diverifikasi Opsi klien ACME yang saya pilih WinACME.
Dan record untuk domain telah dibuat, mari kita lanjutkan ke pembuatan sertifikat:
Kami tertarik dengan kesimpulan terakhir, yaitu opsi yang tersedia untuk mengonfirmasi kepemilikan domain untuk menerbitkan sertifikat wildcard:
Buat catatan DNS secara manual (pembaruan otomatis tidak didukung)
Membuat catatan DNS menggunakan server acme-dns (Anda dapat membaca lebih lanjut di sini.
Membuat catatan DNS menggunakan skrip Anda sendiri (mirip dengan plugin cloudflare untuk certbot).
Sekilas poin ketiga cukup cocok, namun bagaimana jika penyedia DNS tidak mendukung fungsi ini? Tapi kita perlu kasus umum. Dan kasus umumnya adalah data CNAME, karena semua orang mendukungnya. Oleh karena itu, kami berhenti di poin 2 dan melanjutkan untuk mengkonfigurasi server ACME-DNS kami.
Menyiapkan server ACME-DNS dan proses penerbitan sertifikat
Misalnya, saya membuat domain 2nd.pp.ua dan akan menggunakannya di masa mendatang.
Persyaratan wajib Agar server berfungsi dengan benar, perlu membuat catatan NS dan A untuk domainnya. Dan momen tidak menyenangkan pertama yang saya temui adalah cloudflare (setidaknya dalam mode penggunaan gratis) tidak memungkinkan Anda membuat catatan NS dan A secara bersamaan untuk host yang sama. Bukan berarti ini masalah, tapi dalam keadaan terikat itu mungkin terjadi. Dukungan tersebut menjawab bahwa panel mereka tidak mengizinkan melakukan hal ini. Tidak masalah, mari buat dua catatan:
acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.
Pada tahap ini, tuan rumah kita harus menyelesaikannya acmens.2nd.pp.ua.
$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of data
Tetapi acme.2nd.pp.ua itu tidak akan teratasi, karena server DNS yang melayaninya belum berjalan.
Catatan telah dibuat, kami melanjutkan untuk menyiapkan dan meluncurkan server ACME-DNS. Itu akan tinggal di server ubuntu saya buruh pelabuhan container, tetapi Anda dapat menjalankannya di mana pun golang tersedia. Windows juga cukup cocok, tapi saya tetap lebih memilih server Linux.
Buat direktori dan file yang diperlukan:
$ mkdir config
$ mkdir data
$ touch config/config.cfg
Mari gunakan vim dengan editor teks favorit Anda dan tempelkan sampelnya ke config.cfg konfigurasi.
Agar pengoperasian berhasil, cukup dengan memperbaiki bagian umum dan api:
Saat ditanya tentang link ke server ACME-DNS, masukkan URL server yang dibuat (https) di jawabannya. URL server acme-dns: https://acme.2nd.pp.ua
Pada pembukaan, klien mengeluarkan catatan yang perlu ditambahkan ke server DNS yang ada (prosedur satu kali):
[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.
Kami membuat catatan yang diperlukan dan memastikan bahwa itu dibuat dengan benar:
Kami mengonfirmasi bahwa kami telah membuat entri yang diperlukan di winacme, dan melanjutkan proses pembuatan sertifikat:
Cara menggunakan certbot sebagai klien dijelaskan di sini.
Ini menyelesaikan proses pembuatan sertifikat; Anda dapat menginstalnya di server web dan menggunakannya. Jika pada saat membuat sertifikat Anda juga membuat tugas di penjadwal, maka kedepannya proses perpanjangan sertifikat akan terjadi secara otomatis.