Mengonversi sertifikat kluster dari deklarasi berbasis thumbprint menjadi nama umum

Tanda tangan sertifikat (umumnya dikenal sebagai thumbprint) unik. Sertifikat kluster yang dideklarasikan dengan thumbprint mengacu pada instans tertentu dari sertifikat. Kekhususan ini membuat rollover sertifikat, dan manajemen secara umum, sulit dan eksplisit. Setiap perubahan memerlukan peningkatan orkestra dari kluster dan host komputasi yang mendasarinya.

Mengonversi deklarasi sertifikat kluster Azure Service Fabric dari berbasis thumbprint ke deklarasi berdasarkan nama umum subjek sertifikat (CN) akan menyederhanakan manajemen secara signifikan. Secara khusus, rollover sertifikat tidak lagi memerlukan peningkatan kluster. Artikel ini menjelaskan cara mengonversi kluster yang ada ke deklarasi berbasis CN tanpa waktu henti.

Catatan

Kami menyarankan agar Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Berpindah ke sertifikat yang ditandatangani otoritas sertifikat

Keamanan kluster yang sertifikatnya dinyatakan dengan thumbprint bertumpu pada fakta bahwa itu tidak mungkin, atau secara komputasi tidak layak, untuk menempa sertifikat dengan tanda tangan yang sama dengan yang lain. Dalam hal ini, pembuktian sertifikat kurang penting, sehingga sertifikat yang ditandatangani sendiri sudah memadai.

Sebaliknya, keamanan kluster yang sertifikatnya dinyatakan oleh CN mengalir dari kepercayaan implisit yang dimiliki pemilik kluster tersebut di penyedia sertifikatnya. Penyedia adalah layanan infrastruktur kunci publik atau public key infrastructure (PKI) yang menerbitkan sertifikat. Kepercayaan didasarkan, di antara faktor-faktor lain, pada praktik sertifikasi PKI, apakah keamanan operasionalnya diaudit dan disetujui oleh pihak-pihak terpercaya lainnya, dan sebagainya.

Pemilik kluster juga harus memiliki pengetahuan terperinci tentang otoritas sertifikat (CA) mana yang menerbitkan sertifikat mereka, karena ini merupakan aspek mendasar dari memvalidasi sertifikat berdasarkan subjeknya. Ini juga menyiratkan bahwa sertifikat yang ditandatangani sendiri sepenuhnya tidak cocok untuk tujuan ini. Secara harfiah, siapa pun dapat menghasilkan sertifikat dengan subjek tertentu.

Sertifikat yang dideklarasikan oleh CN biasanya dianggap valid jika:

  • Rantainya berhasil dibangun.
  • Subjeknya memiliki elemen CN yang diharapkan.
  • Penerbitnya (langsung atau lebih tinggi dalam rantai) dipercaya oleh agen yang melakukan validasi.

Service Fabric mendukung deklarasi sertifikat oleh CN dengan dua cara:

  • Dengan penerbit sertifikat implisit, yang berarti rantai harus berakhir dalam trust anchor.
  • Dengan penerbit sertifikat yang dideklarasikan dengan thumbprint, yang dikenal sebagai issuer pinning.

Untuk informasi selengkapnya, lihat Deklarasi validasi sertifikat berbasis nama umum.

Untuk mengonversi kluster menggunakan sertifikat yang ditandatangani sendiri yang dinyatakan dengan thumbprint ke CN, targetnya, sertifikat bertanda tangan CA harus terlebih dahulu dimasukkan ke dalam kluster dengan thumbprint. Berikutnya, yang memungkinkan adalah konversi dari thumbprint ke CN.

Untuk tujuan pengujian, sertifikat yang ditandatangani sendiri dapat dideklarasikan oleh CN, tetapi hanya jika penerbit disematkan ke thumbprint sendiri. Dari sudut pandang keamanan, tindakan ini hampir setara dengan mendeklarasikan sertifikat yang sama dengan thumbprint. Konversi yang berhasil dari jenis ini tidak menjamin konversi yang berhasil dari thumbprint ke CN dengan sertifikat bertanda tangan CA. Kami sarankan Anda menguji konversi dengan sertifikat yang tepat dan ditandatangani CA. Opsi gratis ada untuk pengujian ini.

Mengunggah sertifikat dan menginstal dalam kumpulan skala

Di Azure, mekanisme yang direkomendasikan untuk mendapatkan dan menyediakan sertifikat melibatkan Azure Key Vault dan perkakasnya. Sertifikat yang cocok dengan deklarasi sertifikat kluster harus disediakan untuk setiap node set skala komputer virtual yang mencakup kluster Anda. Untuk informasi selengkapnya, lihat Rahasia pada set skala komputer virtual.

Penting untuk menginstal sertifikat kluster saat ini dan target pada komputer virtual dari setiap jenis node kluster sebelum Anda membuat perubahan dalam deklarasi sertifikat kluster. Perjalanan dari penerbitan sertifikat hingga penyediaan ke node Service Fabric dibahas secara mendalam dalam perjalanan sertifikat.

Membawa kluster ke status awal yang optimal

Mengonversi deklarasi sertifikat dari berbasis thumbprint ke berbasis CN mempengaruhi:

  • Bagaimana setiap node dalam kluster menemukan dan menyajikan kredensialnya ke node lain.
  • Bagaimana setiap node memvalidasi kredensial mitranya setelah membangun koneksi yang aman.

Tinjau aturan presentasi dan validasi untuk kedua konfigurasi sebelum Anda melanjutkan. Pertimbangan terpenting ketika Anda melakukan konversi thumbprint-to-CN adalah node yang ditingkatkan dan yang belum ditingkatkan (yaitu, node milik domain peningkatan yang berbeda) harus dapat melakukan autentikasi bersama yang berhasil kapan saja selama peningkatan. Cara yang disarankan untuk mencapai perilaku ini adalah dengan mendeklarasikan sertifikat target atau tujuan dengan thumbprint dalam peningkatan awal. Kemudian selesaikan transisi ke CN dalam langkah berikutnya. Jika kluster sudah dalam status awal yang disarankan, Anda dapat melewati bagian ini.

Ada beberapa status awal yang valid untuk konversi. Invarian adalah bahwa kluster sudah menggunakan sertifikat target (dideklarasikan dengan thumbprint) pada awal peningkatan ke CN. Kami mempertimbangkan GoalCert, OldCert1, dan OldCert2 dalam artikel ini.

Status awal yang valid

  • Thumbprint: GoalCert, ThumbprintSecondary: None
  • Thumbprint: GoalCert, ThumbprintSecondary: OldCert1, di mana GoalCert memiliki tanggal NotBefore yang lebih akhir daripada OldCert1
  • Thumbprint: OldCert1, ThumbprintSecondary: GoalCert, di mana GoalCert memiliki tanggal NotBefore yang lebih akhir daripada OldCert1

Catatan

Sebelum versi 7.2.445 (7.2 CU4), Service Fabric memilih sertifikat kedaluwarsa terjauh (sertifikat dengan properti 'NotAfter' terjauh), sehingga status awal di atas sebelum 7.2 CU4 mengharuskan GoalCert untuk memiliki tanggal NotAfter lebih lambat daripada OldCert1

Jika kluster Anda tidak berada di salah satu status yang valid yang dijelaskan sebelumnya, lihat informasi tentang pencapaian status tersebut di bagian di akhir artikel ini.

Pilih skema validasi sertifikat berbasis CN yang diinginkan

Seperti yang dijelaskan sebelumnya, Service Fabric mendukung mendeklarasikan sertifikat oleh CN dengan trust anchor implisit atau dengan secara eksplisit menyematkan thumbprint penerbit. Untuk informasi selengkapnya, lihat Deklarasi validasi sertifikat berbasis nama umum.

Pastikan Anda memiliki pemahaman yang baik tentang perbedaan dan implikasi memilih salah satu mekanisme. Secara sintaksis, perbedaan atau pilihan ini ditentukan oleh nilai parameter certificateIssuerThumbprintList. Kosong berarti mengandalkan CA akar tepercaya (jangkar kepercayaan), sedangkan seperangkat thumbprint membatasi penerbit langsung sertifikat kluster yang diizinkan.

Catatan

Bidang certificateIssuerThumbprint ini memungkinkan Anda menentukan penerbit langsung sertifikat yang diharapkan yang dideklarasikan oleh subjek CN. Nilai yang dapat diterima adalah satu atau beberapa thumbprint SHA1 yang dipisahkan koma. Tindakan ini memperkuat validasi sertifikat.

Jika belum ada penerbit sertifikat yang ditentukan atau daftarnya kosong, sertifikat akan diterima untuk autentikasi jika rantainya dapat dibangun. Sertifikat kemudian berakhir di akar yang dipercaya oleh validator. Jika satu atau beberapa cap jempol penerbit ditentukan, sertifikat akan diterima jika thumbprint penerbit langsungnya, seperti yang diekstrak dari rantai, cocok dengan salah satu nilai yang ditentukan dalam bidang ini. Sertifikat akan diterima apakah akar dipercaya atau tidak.

PKI dapat menggunakan otoritas sertifikasi yang berbeda (juga dikenal dengan penerbit sertifikat) untuk menandatangani sertifikat dengan subjek tertentu. Untuk alasan ini, penting untuk menentukan semua thumbprint penerbit yang diharapkan untuk subjek tersebut. Dengan kata lain, pembaruan sertifikat tidak dijamin akan ditandatangani oleh penerbit yang sama dengan sertifikat yang sedang diperbarui.

Menentukan penerbit sertifikat dianggap sebagai praktik terbaik. Menghilangkan penerbit sertifikat akan terus bekerja untuk sertifikat yang merantai hingga akar tepercaya, tetapi perilaku ini memiliki keterbatasan dan mungkin akan dihapuskan dalam waktu dekat. Kluster yang diterapkan di Azure, diamankan dengan sertifikat X509 yang dikeluarkan oleh PKI pribadi, dan dinyatakan oleh subjek mungkin tidak dapat divalidasi oleh Service Fabric (untuk komunikasi kluster-ke-layanan). Validasi mengharuskan kebijakan sertifikat PKI untuk dapat ditemukan, tersedia, dan dapat diakses.

Memperbarui templat dan penggunaan Azure Resource Manager kluster

Mengelola kluster Service Fabric Anda dengan templat Azure Resource Manager (ARM). Alternatifnya, yang juga menggunakan artefak JSON, adalah Azure Resource Explorer (pratinjau). Pengalaman yang setara tidak tersedia di portal Microsoft Azure saat ini.

Jika templat asli yang terkait dengan kluster yang ada tidak tersedia, templat yang setara dapat diperoleh di portal Microsoft Azure. Masuk ke grup sumber daya yang berisi kluster, dan pilih Ekspor templat dari menu Otomatisasi di sebelah kiri. Lalu pilih sumber daya yang Anda inginkan. Minimal, kumpulan skala komputer virtual dan sumber daya kluster, harus diekspor. Templat yang dihasilkan juga dapat diunduh. Templat ini mungkin memerlukan perubahan sebelum sepenuhnya dapat diterapkan. Templat juga mungkin tidak cocok dengan yang asli secara persis. Ini adalah cerminan dari status sumber daya kluster saat ini.

Perubahan yang diperlukan adalah sebagai berikut:

  • Memperbarui definisi ekstensi node Service Fabric (di bawah sumber daya komputer virtual). Jika kluster menentukan beberapa jenis node, Anda harus memperbarui definisi setiap set skala komputer virtual yang sesuai.
  • Memperbarui definisi sumber daya kluster.

Contoh terperinci disertakan di sini.

Memperbarui set skala komputer virtual

Dari:

"virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
                    "properties": {
                        "type": "ServiceFabricNode",
                        "autoUpgradeMinorVersion": true,
                        "protectedSettings": {
                            ...
                        },
                        "publisher": "Microsoft.Azure.ServiceFabric",
                        "settings": {
                            ...
                            "certificate": {
                                "thumbprint": "[parameters('certificateThumbprint')]",
                                "x509StoreName": "[parameters('certificateStoreValue')]"
                            }
                        },
                        ...
                    }
                },

Kepada:

"virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
                    "properties": {
                        "type": "ServiceFabricNode",
                        "autoUpgradeMinorVersion": true,
                        "protectedSettings": {
                            ...
                        },
                        "publisher": "Microsoft.Azure.ServiceFabric",
                        "settings": {
                            ...
                            "certificate": {
                                "commonNames": [
                                    "[parameters('certificateCommonName')]"
                                ],
                                "x509StoreName": "[parameters('certificateStoreValue')]"
                            }
                        },
                        ...
                    }
                },

Memperbarui sumber daya kluster

Di sumber daya Microsoft.ServiceFabric/clusters, tambahkan properti certificateCommonNames dengan pengaturan commonNames dan hapus properti certificate bersama-sama (semua pengaturannya).

Dari:

    {
        "apiVersion": "2018-02-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        "dependsOn": [
            ...
        ],
        "properties": {
            "addonFeatures": [
                ...
            ],
            "certificate": {
              "thumbprint": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
            },
        ...

Kepada:

    {
        "apiVersion": "2018-02-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        "dependsOn": [
            ...
        ],
        "properties": {
            "addonFeatures": [
                ...
            ],
            "certificateCommonNames": {
                "commonNames": [
                    {
                        "certificateCommonName": "[parameters('certificateCommonName')]",
                        "certificateIssuerThumbprint": "[parameters('certificateIssuerThumbprintList')]"
                    }
                ],
                "x509StoreName": "[parameters('certificateStoreValue')]"
            },
        ...

Untuk informasi selengkapnya, lihat Menyebarkan kluster Service Fabric yang menggunakan sertifikat nama umum dan bukan thumbprint.

Menyebarkan templat yang diperbarui

Menyebarkan kembali templat yang diperbarui setelah Anda membuat perubahan.

$groupname = "sfclustertutorialgroup"

New-AzResourceGroupDeployment -ResourceGroupName $groupname -Verbose `
    -TemplateParameterFile "C:\temp\cluster\parameters.json" -TemplateFile "C:\temp\cluster\template.json" 

Mencapai status awal yang valid untuk mengonversi kluster ke deklarasi sertifikat berbasis CN

Status awal Peningkatan 1 Peningkatan 2
Thumbprint: OldCert1, ThumbprintSecondary: None dan GoalCert memiliki tanggal NotBefore yang lebih lambat dari OldCert1 Thumbprint: OldCert1, ThumbprintSecondary: GoalCert -
Thumbprint: OldCert1, ThumbprintSecondary: None dan OldCert1 memiliki tanggal NotBefore yang lebih lambat dari GoalCert Thumbprint: GoalCert, ThumbprintSecondary: OldCert1 Thumbprint: GoalCert, ThumbprintSecondary: None
Thumbprint: OldCert1, ThumbprintSecondary: GoalCert, di mana OldCert1 memiliki tanggal NotBefore yang lebih lambat dari GoalCert Meningkatkan ke Thumbprint: GoalCert, ThumbprintSecondary: None -
Thumbprint: GoalCert, ThumbprintSecondary: OldCert1, di OldCert1 mana memiliki tanggal NotBefore yang lebih lambat dari GoalCert Meningkatkan ke Thumbprint: GoalCert, ThumbprintSecondary: None -
Thumbprint: OldCert1, ThumbprintSecondary: OldCert2 Menghapus salah satu OldCert1 atau OldCert2 untuk sampai ke status Thumbprint: OldCertx, ThumbprintSecondary: None Lanjutkan dari status awal baru

Catatan

Untuk kluster pada versi sebelum versi 7.2.445 (7.2 CU4), ganti NotBefore dengan NotAfter pada status di atas.

Untuk instruksi tentang cara melakukan salah satu peningkatan ini, lihat Mengelola sertifikat di kluster Azure Service Fabric.

Langkah berikutnya