Certbot melaporkan pembaruan yang berhasil, berkas di disk membawa tanggal baru, dan klien masih menemui identitas lama. SoftEther menyimpan sertifikat SSL server-nya di konfigurasi tingkat servernya sendiri, jadi berkas baru di disk tidak mengubah apa pun sampai leaf dan kuncinya diimpor. Urutan di bawah mencakup satu impor manual, pembungkus yang berjalan setelah setiap pembaruan, dan pemeriksaan yang membaca apa yang benar-benar disajikan listener. Setiap langkah meninggalkan bukti yang dapat Anda bandingkan setelah pembaruan berikutnya.

Berkas yang diperbarui tidak mengubah identitas server

Penerbitan dan penerapan adalah peristiwa terpisah dengan mode kegagalan terpisah. Klien ACME menulis berkas ke direktori garis keturunan dan mencatat keberhasilan; SoftEther terus menggunakan sertifikat yang terakhir dimuat ke konfigurasinya. Jadi status keluar nol menggambarkan berkasnya, bukan layanannya, dan keduanya dapat berbeda selama tidak ada yang melihat. Perlakukan impor sebagai langkah penerapan dan pembaruan sebagai masukannya.

Perbedaan itu juga menjelaskan kegagalan separuh yang membingungkan: sertifikat lama terus bekerja sampai kedaluwarsa, jadi awalnya tidak ada yang tampak rusak. Saat kedaluwarsa, semua klien gagal sekaligus, yang tampak seperti gangguan alih-alih langkah penerapan yang terlewat. Memeriksa identitas yang disajikan setelah setiap pembaruan mengubah kejutan itu menjadi pengamatan rutin.

Pilih tantangan yang cocok dengan listener

Sertifikat harus menyebutkan host yang diverifikasi klien, jadi gunakan nama DNS publik alih-alih label internal atau alamat. HTTP-01 mengharuskan tantangan dijawab di port 80 sesaat, yang merupakan listener sementara dan tidak pernah menjadi alasan untuk memindahkan port SoftEther sendiri. DNS-01 membuktikan kendali melalui catatan dan tidak membutuhkan HTTP masuk sama sekali.

Pembaruan tanpa pengawasan berarti integrasi DNS otomatis dengan kredensial yang dibatasi ke satu zona, bukan catatan TXT yang diketik tangan setiap dua bulan. Wildcard mengubah jenis tantangan, bukan kebutuhan akan otomatisasi itu. Putuskan ini sebelum sertifikat pertama ada, karena mengganti jenis tantangan nanti berarti menyentuh konfigurasi klien dan firewall sekaligus.

Jaga artefak tetap rapi selama Anda di sini. Leaf dan perantara datang sebagai berkas terpisah dan sebagai satu berkas rantai gabungan, kunci privat terpisah lagi, dan impor membutuhkan rantai dengan kunci yang cocok, bukan sertifikat publik saja.

Impor rantai pada tingkat server

Cadangkan konfigurasi server dan pastikan Anda masih dapat menjangkau antarmuka manajemen sebelum menyentuh sertifikat. Hubungkan sebagai administrator server, bukan administrator Virtual Hub, karena sertifikat milik objek server. Lalu muat rantai dan kunci dengan jalur absolut, dari berkas yang dapat dibaca akun yang menjalankan perintah. Perhatikan bahwa jalurnya absolut karena perintah menyelesaikannya dari direktori kerja proses yang menjalankan vpncmd:

ServerCertSet /LOADCERT:/etc/letsencrypt/live/vpn.example.com/fullchain.pem /LOADKEY:/etc/letsencrypt/live/vpn.example.com/privkey.pem

Baca keluaran perintah alih-alih menganggap berhasil, lalu baca kembali rantainya alih-alih memercayai berkas yang Anda berikan. Batas antara build yang mengimpor seluruh bundel PEM dan build yang hanya mengambil sertifikat pertama tidak didokumentasikan di satu tempat, jadi pemeriksaan itulah yang memutuskannya untuk build di depan Anda. Hitung sertifikat yang disajikan listener; leaf tanpa perantara adalah tanda pengimpor yang hanya memakai blok pertama.

Jaga kunci yang diimpor tetap hanya dapat dibaca akun yang menjalankan server, dan jauhkan kata sandi manajemen dari riwayat shell. Untuk impor pertama ini, ketik kata sandi pada prompt alih-alih memberikannya sebagai argumen perintah. Dua kebiasaan itu tidak memakan biaya dan menghapus cara paling umum penerapan sertifikat membocorkan sesuatu yang seharusnya dilindunginya. Lakukan itu sebelum impor pertama, bukan sesudahnya.

Kaitkan penerapan, bukan pembaruan

Setelah impor manual berhasil, letakkan tepat langkah-langkah itu dalam pembungkus kecil dan panggil dari klien ACME setelah pembaruan yang berhasil. Certbot menyetel RENEWED_LINEAGE dan RENEWED_DOMAINS untuk hook, sehingga pembungkus dapat bertindak atas satu sertifikat pada mesin yang mengelola beberapa. Saring berdasarkan garis keturunan alih-alih bereaksi terhadap setiap pembaruan pada host. Pembungkus adalah kode penerapan yang berjalan dengan hak istimewa server, jadi tinjau seperti skrip lain di posisi itu.

certbot renew --deploy-hook /usr/local/sbin/softether-deploy.sh

Hook yang berjalan tanpa pengawasan memerlukan penyimpanan kredensial terlindunginya sendiri dan sinyal kegagalan yang mencapai manusia. Jika penerbitan berhasil dan impor gagal, ulangi impor alih-alih meminta sertifikat lain, karena permintaan kedua menyembunyikan cacat penerapan di balik berkas baru. Dokumentasi pembaruan Certbot menyatakan jelas bahwa eksekusi yang tidak memperbarui apa pun adalah hasil normal, jadi hook-lah yang membedakan keduanya.

Bandingkan rantai yang disajikan dengan berkasnya

Baca listener, bukan disk. Hubungkan ke port yang menghadap klien dengan nama server yang dipakai klien, lalu bandingkan sidik jari dan rantai yang dikirimkan dengan garis keturunan yang dipasang hook. Dua perintah mencakupnya, dan yang pertama juga menunjukkan apakah perantara datang sama sekali:

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -showcerts </dev/null 2>/dev/null | grep -c 'BEGIN CERTIFICATE'
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -dates -fingerprint -sha256

Lalu buat koneksi klien baru, karena sesi yang dibuat sebelum impor diautentikasi terhadap identitas sebelumnya dan tidak membuktikan apa pun tentang yang baru. Jika klien menyematkan leaf lama, mereka memerlukan pembaruan terkoordinasi bahkan ketika rantai publik valid, dan tugas itu termasuk dalam runbook yang sama dengan pembaruan. Proksi balik di depan layanan dapat menyajikan sertifikat yang baik sementara listener VPN masih menyimpan yang lama, dan itulah sebabnya pemeriksaan harus menyebut port yang benar-benar dijangkau klien. Catat sidik jari di samping tanggal pembaruan, agar perbandingan berikutnya adalah pemeriksaan, bukan tindakan mengingat.

Artikel terkait