Kapan dan Bagaimana Anda Menggunakan Sertifikat Jaringan Internal

Posting : 15 Apr 2021



Kemarin, Google merilis Chrome 90, dan dengan "HTTPS" itu menjadi protokol default jika Anda hanya memasukkan nama host ke bilah URL tanpa menentukan protokolnya.  Ini adalah indikasi terbaru bahwa inisiatif "HTTPS Everywhere" EFF berhasil.  Browser semakin mungkin mendorong pengguna ke konten yang dienkripsi.  Meskipun saya memuji tren ini, namun ada sisi negatifnya untuk situs internal kecil yang sering kali menyulitkan konfigurasi sertifikat yang tepat.  Selain itu, browser menjadi lebih pemilih tentang sertifikat apa yang mereka terima.  Misalnya, di "masa lalu yang indah", saya dapat menyiapkan sertifikat internal yang berlaku selama 10 tahun, tidak perlu khawatir akan kedaluwarsa.  Saat ini, browser akan menolak sertifikat yang berlaku selama lebih dari 13 bulan (398 hari).

Untungnya, ada solusinya: Protokol "ACME" yang dipopulerkan oleh inisiatif Let's Encrypt membuatnya relatif mudah untuk memperbarui sertifikat.  Sayangnya, tidak semua perangkat lunak mendukungnya, dan khususnya, perangkat IoT seringkali tidak mendukungnya.

Mengapa Menjalankan Otoritas Sertifikat Anda Sendiri

Mari mundur sejenak, dan lihat otoritas sertifikat.  Mengapa Anda ingin menjalankannya sendiri?  Ada beberapa alasan yang membuat saya menggunakan otoritas sertifikat saya sendiri:

Privasi: Otoritas sertifikat publik memelihara log transparansi sertifikat.  Log ini dibuat untuk umum dan mudah dicari.  Saya tidak ingin nama host internal saya muncul di log ini.

Fleksibilitas: Kadang-kadang, saya tidak ingin mengikuti aturan yang harus dijalankan oleh otoritas sertifikat publik.  Saya masih memiliki kamera keamanan yang cukup bagus yang tidak ingin saya lempar yang hanya mendukung kunci pribadi 1024 bit.  Memverifikasi nama host internal juga bisa sulit jika Anda menggunakan domain level teratas nonpublik, atau jika host tidak dapat dijangkau untuk validasi sertifikat (Anda perlu menggunakan DNS yang memerlukan host DNS yang bekerja sama).

Bagaimana Memulai Dengan Otoritas Sertifikat Pribadi Anda

Saya menemukan cara termudah untuk menyiapkan otoritas sertifikat Anda sendiri (dan dapat menggunakan protokol ACME) adalah langkah kecil.  Smallstep sering digunakan untuk kunci SSH, tetapi juga merupakan otoritas sertifikat yang sangat mumpuni dan mudah dijalankan di mesin virtual atau container.  Ketika saya mulai menggunakan smallstep, diperlukan sedikit pekerjaan (tambalan) agar kompatibel dengan macOS.  Tapi saya yakin masalah ini telah diperbaiki.  Sertifikat yang diperoleh melalui ACME kehilangan "CommonName" yang dibutuhkan MacOS (dan RFC).  Hari ini, "Panduan Memulai" adalah semua yang Anda perlukan.

Proses penyiapan akan melakukan semua kerja keras untuk Anda.  Anda akan mendapatkan sertifikat CA, dan sertifikat Intermediate dan harus siap dalam waktu singkat.  Pastikan untuk mengimpor sertifikat CA ke klien Anda dan mempercayai mereka.  (Saya menyertakan sertifikat perantara juga untuk menghindari beberapa masalah dengan sertifikat perantara yang tidak disertakan oleh server).

Otoritas sertifikat tidak harus selalu online, tetapi agar ACME bekerja paling baik dan agar sistem Anda dapat memperbarui sertifikat secara otomatis, Anda mungkin ingin terus menjalankannya.

Menggunakan Otoritas Sertifikat Anda Sendiri dengan "certbot"

"certbot" adalah klien ACME paling populer saat ini.  Yang perlu Anda lakukan untuk menggunakannya dengan smallstep adalah mengarahkannya ke server smallstep Anda sendiri:

certbot certonly -d example.com --server https: // internal-ca-hostname: 8443 / acme / acme / direktori 

secara default, smallstep mendengarkan pada port 8443. Sistem tempat Anda menjalankan certbot perlu mempercayai Smallstep CA atau koneksi akan gagal.

Untuk verifikasi internal, saya juga suka DNS daripada HTTP default normal.  Anda sering berurusan dengan perangkat yang memiliki konfigurasi server web yang aneh.  Jadi Anda tidak dapat dengan mudah menjalankan server web yang berdiri sendiri, atau menggunakan plugin nginx / apache.  Direktori home juga tidak selalu dapat ditulisi (atau bahkan ada).  Jadi DNS merupakan alternatif yang bagus.  Untuk menggunakan DNS, paling mudah jika Anda menjalankan server DNS otoritatif internal untuk zona masing-masing, dan mengaktifkan pembaruan dinamis.  Certbot memiliki modul "dns-rfc2136" yang mendukung pembaruan DNS dinamis yang diautentikasi.

Banyak Bagian Yang Bergerak ...

Berikut adalah daftar "Yang Harus Dilakukan" singkat dari semua yang Anda butuhkan dalam urutan kasar yang harus Anda siapkan:

Daftarkan domain untuk penggunaan internal (atau gunakan subdomain yang sudah Anda miliki).  JANGAN gunakan .local secara internal.

Siapkan server DNS otoritatif internal

Aktifkan DNS dinamis yang diautentikasi pada server DNS itu dan izinkan pembaruan dari IP internal Anda menggunakan kunci tertentu.

Pasang langkah kecil

Instal certbot dan modul rfc2136

Jalankan certbot untuk mendapatkan sertifikat baru Anda

Symlink sertifikat ke lokasi di mana sistem Anda mengharapkannya

Gunakan hook perpanjangan certbot untuk melakukan operasi tambahan pada sertifikat sesuai kebutuhan (misalnya jika Anda perlu membuat keystore Java atau memulai ulang layanan).