Dua sertifikat CA dapat memegang kunci publik yang sama dan subjek yang sama namun tetap tidak dapat dipertukarkan. Yang satu bertanda tangan sendiri, yang lain bertanda tangan silang oleh root lama, dan nama penerbit, nomor seri, serta tanda tangannya berbeda. Sebuah leaf dapat terikat secara khusus ke salah satunya melalui Authority Key Identifier-nya. Ikatan itu tetap tak terlihat sampai klien memilih rantai yang salah dan handshake gagal tanpa alasan yang jelas.

Kerjakan lima pemeriksaan ini secara berurutan: masing-masing menyingkirkan kegagalan yang berbeda.

Pemeriksaan 1: gambar kedua rantai sebelum menyentuh templat

Tuliskan jalurnya. Populasi lama memercayai Root Lama A, yang menerbitkan CA B, yang menerbitkan leaf server. Populasi baru memercayai CA B bertanda tangan sendiri secara langsung. Kedua sertifikat B membawa kunci dan subjek yang sama, dan itulah sebabnya orang yang membaca baris subjek melihat satu CA di tempat klien melihat dua.

Salinan bertanda tangan silang juga harus berupa sertifikat CA sungguhan, dengan basic constraints dan key usage yang mengizinkan penandatanganan.

Pemeriksaan 2: bandingkan bidang AKI, bukan hanya kuncinya

Nama penerbit leaf harus cocok dengan subjek B, dan bagian itu biasanya bertahan. Authority Key Identifier adalah tempat kedua salinan menyimpang, karena ia dapat membawa pengenal kunci, penerbit sertifikat, dan nomor seri. Pengenal kunci cocok dengan kedua salinan, karena kuncinya identik. Bidang penerbit dan nomor seri hanya cocok dengan satu, dan itulah sebabnya rantai yang dibangun terhadap salinan bertanda tangan sendiri dapat gagal terhadap yang bertanda tangan silang.

Periksa leaf-nya alih-alih menebak: openssl x509 -in server.pem -noout -ext authorityKeyIdentifier.

Lalu bandingkan kedua kandidat dengan openssl x509 -in b-cross.pem -noout -text | grep -A2 "Authority Key Identifier", dan perintah yang sama terhadap salinan bertanda tangan sendiri.

Jika leaf membawa penerbit dan nomor seri, hanya sertifikat yang dijelaskan nilai-nilai itu yang menuntaskan rantai, salinan mana pun yang kebetulan dimuat klien.

Pemeriksaan 3: ubah kebijakan penerbitan, jangan pernah byte yang ditandatangani

Ekstensi hidup di dalam tanda tangan. Menambah, menghapus, atau menyunting satu ekstensi pada leaf yang ada bukan perbaikan, itu sertifikat yang berbeda, dan perlu penerbitan ulang. Perubahannya milik kebijakan penerbitan: authorityKeyIdentifier = keyid,issuer:always membuat leaf baru membawa ikatan khusus sertifikat, sedangkan keyid saja mempertahankan bentuk yang lebih longgar yang cocok untuk transisi penandatanganan silang yang disengaja. Putuskan mana yang diinginkan PKI Anda sebelum batch berikutnya ditandatangani.

Menyunting templat bersama juga mengubah setiap sertifikat di masa depan, bukan hanya server di depan Anda.

Pemeriksaan 4: verifikasi setiap populasi kepercayaan secara terpisah

Uji jalur lama dan jalur baru sebagai eksekusi terpisah. openssl verify -purpose sslserver -verify_hostname vpn.example -CAfile old-root.pem -untrusted b-cross-signed.pem server.pem melatih rute bertanda tangan silang, dan perintah yang sama dengan root baru serta tanpa berkas untrusted melatih rute bertanda tangan sendiri. Mencampur kedua root dalam satu bundel menyembunyikan rantai mana yang dipilih. Ulangi dengan klien nyata sesudahnya, karena backend VPN dapat lebih memilih sebuah rantai atau mematok sertifikat dengan cara yang tidak dilakukan openssl.

Antarkan sertifikat perantara melalui konfigurasi layanan yang benar-benar dibaca klien, bukan melalui halaman wiki.

Pemeriksaan 5: jaga jalur lama pada jam pensiun

Penandatanganan silang menjaga jalur kepercayaan lama tetap hidup secara desain, yang sekaligus menjadi tujuan dan risikonya. Ia tidak memulihkan root lama yang telah dikompromikan, dan tidak menghapus root itu dari klien mana pun. Tuliskan kapan jalur lama berhenti memberi kepercayaan, dan pastikan hari itu benar-benar tiba.

Jika setiap klien dapat menerima root baru sebelum leaf berpindah, peluncuran kepercayaan ganda yang sederhana lebih mudah daripada penandatanganan silang, dan menyisakan satu hal lebih sedikit untuk dipensiunkan.

Artikel terkait