Küme sertifikalarını parmak izi tabanlı bildirimlerden ortak adlara dönüştürme

Sertifikanın imzası (genellikle parmak izi olarak bilinir) benzersizdir. Parmak iziyle bildirilen bir küme sertifikası, sertifikanın belirli bir örneğine başvurur. Bu özellik, sertifika geçişi ve yönetiminin genel olarak zor ve açık olmasını sağlar. Her değişiklik, kümenin ve temel bilgi işlem konaklarının yükseltmelerini düzenlemeyi gerektirir.

Azure Service Fabric kümesinin sertifika bildirimlerini parmak izi tabanlı bildirimlerden sertifikanın konu ortak adına (CN) göre bildirimlere dönüştürmek, yönetimi önemli ölçüde kolaylaştırır. Özellikle, bir sertifikayı devretmek için artık küme yükseltmesi gerekmez. Bu makalede, mevcut bir kümenin kapalı kalma süresi olmadan CN tabanlı bildirimlere nasıl dönüştürüldüğü açıklanır.

Not

Azure ile etkileşime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Sertifika yetkilisi tarafından imzalanan sertifikalara gitme

Sertifikası parmak iziyle bildirilen bir kümenin güvenliği, başka bir imzayla aynı imzaya sahip bir sertifikayı taklit etmek imkansız veya işlem açısından mümkün olmayan bir durumdur. Bu durumda, sertifikanın başarısı daha az önemlidir, bu nedenle otomatik olarak imzalanan sertifikalar yeterlidir.

Buna karşılık, sertifikaları CN tarafından bildirilen bir kümenin güvenliği, küme sahibinin sertifika sağlayıcısında sahip olduğu örtük güvenden akar. Sağlayıcı, sertifikayı veren ortak anahtar altyapısı (PKI) hizmetidir. Güven, diğer faktörlerin yanında PKI'nın sertifikasyon uygulamalarına, operasyonel güvenliklerinin henüz diğer güvenilir taraflar tarafından denetlenip onaylanıp onaylanmadığına vb. dayanır.

Bu, sertifikayı konuya göre doğrulamanın temel bir yönü olduğundan, küme sahibinin sertifikalarını hangi sertifika yetkililerinin (CA) verdiği konusunda da ayrıntılı bilgi sahibi olması gerekir. Bu, otomatik olarak imzalanan sertifikaların bu amaç için tamamen uygun olmadığını da gösterir. Kelimenin tam anlamıyla herkes belirli bir konuya sahip bir sertifika oluşturabilir.

CN tarafından bildirilen bir sertifika genellikle şu durumda geçerli kabul edilir:

  • Zinciri başarıyla oluşturulabilir.
  • Konu beklenen CN öğesine sahiptir.
  • Verene (zincirde hemen veya daha yüksek) doğrulamayı gerçekleştiren aracı tarafından güvenilir.

Service Fabric, CN tarafından sertifika bildirimini iki şekilde destekler:

  • Örtük verenlerle, bu da zincirin bir güven bağlantısıyla bitmesi gerektiği anlamına gelir.
  • Veren sabitleme olarak bilinen parmak izi tarafından bildirilen verenlerle.

Daha fazla bilgi için bkz. Ortak ad tabanlı sertifika doğrulama bildirimleri.

Parmak izi tarafından CN'ye bildirilen otomatik olarak imzalanan bir sertifika kullanarak kümeyi dönüştürmek için hedef, CA ile imzalanan sertifikanın ilk olarak parmak iziyle kümeye tanıtılması gerekir. Ancak bu durumda parmak izinden CN'ye dönüştürme mümkündür.

Test amacıyla, CN tarafından otomatik olarak imzalanan bir sertifika bildirilebilir , ancak yalnızca veren kendi parmak izine sabitlenmişse. Güvenlik açısından bakıldığında, bu eylem aynı sertifikayı parmak iziyle bildirmeye neredeyse eşdeğerdir. Bu tür başarılı bir dönüştürme, PARMAK izinden CA imzalı sertifikayla CN'ye başarılı bir dönüştürmeyi garanti etmez. Dönüştürmeyi uygun, CA imzalı bir sertifikayla test yapmanızı öneririz. Bu test için ücretsiz seçenekler mevcuttur.

Sertifikayı karşıya yükleme ve ölçek kümesine yükleme

Azure'da, sertifikaları almak ve sağlamak için önerilen mekanizma, Azure Key Vault ve araçlarını içerir. Küme sertifika bildirimiyle eşleşen bir sertifika, kümenizi oluşturan sanal makine ölçek kümelerinin her düğümüne sağlanmalıdır. Daha fazla bilgi için bkz . Sanal makine ölçek kümelerinde gizli diziler.

Kümenin sertifika bildirimlerinde değişiklik yapmadan önce kümenin her düğüm türünün sanal makinelerine hem geçerli hem de hedef küme sertifikalarını yüklemeniz önemlidir. Sertifika verme aşamasından Service Fabric düğümüne sağlama yolculuğu, Sertifikanın yolculuğu bölümünde ayrıntılı olarak ele alınıyor.

Kümeyi en iyi başlangıç durumuna getirme

Sertifika bildirimini parmak izi tabanlıdan CN tabanlı etkilere dönüştürme:

  • Kümedeki her düğümün kimlik bilgilerini bulma ve diğer düğümlere sunma.
  • Her düğümün güvenli bir bağlantı kurduktan sonra karşılık geleninin kimlik bilgilerini doğrulama şekli.

Devam etmeden önce her iki yapılandırma için de sunu ve doğrulama kurallarını gözden geçirin. Parmak izinden CN'ye dönüştürme gerçekleştirirken dikkat edilmesi gereken en önemli nokta, yükseltilen ve henüz yükseltilmemiş düğümlerin (farklı yükseltme etki alanlarına ait düğümler) yükseltme sırasında herhangi bir zamanda başarılı bir karşılıklı kimlik doğrulaması gerçekleştirebilmesi gerektiğidir. Bu davranışı gerçekleştirmenin önerilen yolu, hedef veya hedef sertifikayı ilk yükseltmede parmak iziyle bildirmektir. Ardından sonraki bir CN'ye geçişi tamamlayın. Küme zaten önerilen bir başlangıç durumundaysa, bu bölümü atlayabilirsiniz.

Dönüştürme için birden çok geçerli başlangıç durumu vardır. Sabit olan, kümenin CN'ye yükseltmenin başlangıcında hedef sertifikayı (parmak iziyle bildirilir) zaten kullanıyor olmasıdır. Bu makalede , OldCert1ve OldCert2 konularını ele GoalCertalıyoruz.

Geçerli başlangıç durumları

  • Thumbprint: GoalCert, ThumbprintSecondary: None
  • Thumbprint: GoalCert, ThumbprintSecondary: OldCert1, daha sonraki NotBefore bir tarihe GoalCert sahipOldCert1
  • Thumbprint: OldCert1, ThumbprintSecondary: GoalCert, daha sonraki NotBefore bir tarihe GoalCert sahipOldCert1

Not

7.2.445 (7.2 CU4) sürümünden önce Service Fabric en uzak süresi dolan sertifikayı (en uzak 'NotAfter' özelliğine sahip sertifika) seçtiğinden, 7.2 CU4'ten önceki yukarıdaki başlangıç durumları Için GoalCert'in NotAfterOldCert1

Kümeniz daha önce açıklanan geçerli durumlardan birinde değilse, bu makalenin sonundaki bölümde bu duruma ulaşmayla ilgili bilgilere bakın.

İstenen CN tabanlı sertifika doğrulama düzenini seçin

Daha önce açıklandığı gibi Service Fabric, CN tarafından örtük bir güven bağlantısıyla veya veren parmak izlerinin açıkça sabitlenmesiyle sertifikaların bildirilmesine destek olur. Daha fazla bilgi için bkz. Ortak ad tabanlı sertifika doğrulama bildirimleri.

Farkları ve iki mekanizmayı seçmenin etkilerini iyi anladığınızdan emin olun. Bu fark veya seçim, parametrenin değerine certificateIssuerThumbprintList göre değişiklik gösterir. Boş, güvenilen kök CA'ya (güven bağlantısı) güvenmek anlamına gelirken, parmak izi kümesi küme sertifikalarının izin verilen doğrudan verenlerini kısıtlar.

Not

alanı, certificateIssuerThumbprint konu CN'si tarafından bildirilen sertifikaların beklenen doğrudan verenlerini belirtmenize olanak tanır. Kabul edilebilir değerler bir veya daha fazla virgülle ayrılmış SHA1 parmak izidir. Bu eylem sertifika doğrulamasını güçlendirir.

Veren belirtilmezse veya liste boşsa, zinciri oluşturulabiliyorsa sertifika kimlik doğrulaması için kabul edilir. Sertifika daha sonra doğrulayıcı tarafından güvenilen bir köke sahip olur. Bir veya daha fazla veren parmak izi belirtilirse, doğrudan verenin parmak izi zincirden ayıklandığı gibi bu alanda belirtilen değerlerle eşleşiyorsa sertifika kabul edilir. Sertifika, köke güvenilip güvenilmediğine bakılmaksızın kabul edilir.

PKI, belirli bir konuyla sertifika imzalamak için farklı sertifika yetkilileri ( verenler olarak da bilinir) kullanabilir. Bu nedenle, bu konu için beklenen tüm veren parmak izlerinin belirtilmesi önemlidir. Başka bir deyişle, bir sertifikanın yenilenmesinin, yenilenen sertifikayla aynı veren tarafından imzalanması garanti değildir.

Vereni belirtmek en iyi uygulama olarak kabul edilir. Verenin atlanması, güvenilen bir köke kadar zincirleme sertifikalar için çalışmaya devam eder, ancak bu davranışın sınırlamaları vardır ve yakın gelecekte aşamalı olarak değiştirilebilir. Azure'da dağıtılan, özel bir PKI tarafından verilen ve konu tarafından bildirilen X509 sertifikalarıyla güvenliği sağlanan kümeler Service Fabric tarafından doğrulanamayabilir (kümeden hizmete iletişim için). Doğrulama, PKI'nın sertifika ilkesinin bulunabilir, kullanılabilir ve erişilebilir olmasını gerektirir.

Kümenin Azure Resource Manager şablonunu güncelleştirme ve dağıtma

Azure Resource Manager (ARM) şablonlarıyla Service Fabric kümelerinizi yönetin. JSON yapıtlarını da kullanan alternatiflerden biri, Azure Kaynak Gezgini (önizleme)'dir. Eşdeğer bir deneyim şu anda Azure portal kullanılabilir değildir.

Mevcut kümeye karşılık gelen özgün şablon kullanılamıyorsa, Azure portal eşdeğer bir şablon elde edilebilir. Kümeyi içeren kaynak grubuna gidin ve soldaki Otomasyonmenüsünden Şablonu dışarı aktar'ı seçin. Ardından istediğiniz kaynakları seçin. En azından, sırasıyla sanal makine ölçek kümesi ve küme kaynakları dışarı aktarılmalıdır. Oluşturulan şablon da indirilebilir. Bu şablon tamamen dağıtılmadan önce değişiklik gerektirebilir. Şablon aynı zamanda özgün şablonla tam olarak eşleşmeyebilir. Küme kaynağının geçerli durumunun bir yansımasıdır.

Gerekli değişiklikler şunlardır:

  • Service Fabric düğüm uzantısının tanımını güncelleştirme (sanal makine kaynağının altında). Küme birden çok düğüm türü tanımlıyorsa, karşılık gelen her sanal makine ölçek kümesinin tanımını güncelleştirmeniz gerekir.
  • Küme kaynak tanımı güncelleştiriliyor.

Ayrıntılı örnekler burada verilmiştir.

Sanal makine ölçek kümesi kaynaklarını güncelleştirme

Kimden:

"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')]"
                            }
                        },
                        ...
                    }
                },

Hedef:

"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')]"
                            }
                        },
                        ...
                    }
                },

Küme kaynağını güncelleştirme

Microsoft.ServiceFabric/clusters kaynağında commonNames ayarına sahip bir certificateCommonNames özelliği ekleyin ve sertifika özelliğini tümüyle kaldırın (tüm ayarları).

Kimden:

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

Hedef:

    {
        "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')]"
            },
        ...

Daha fazla bilgi için bkz. Parmak izi yerine sertifika ortak adını kullanan bir Service Fabric kümesi dağıtma.

Güncelleştirilmiş şablonu dağıtma

Değişiklikleri yaptıktan sonra güncelleştirilmiş şablonu yeniden dağıtın.

$groupname = "sfclustertutorialgroup"

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

Kümeyi CN tabanlı sertifika bildirimlerine dönüştürmek için geçerli bir başlangıç durumu elde etme

Başlangıç durumu Yükseltme 1 Yükseltme 2
Thumbprint: OldCert1, ThumbprintSecondary: None ve GoalCert daha sonraki NotBefore bir tarihe sahip OldCert1 Thumbprint: OldCert1, ThumbprintSecondary: GoalCert -
Thumbprint: OldCert1, ThumbprintSecondary: None ve OldCert1 daha sonraki NotBefore bir tarihe sahip GoalCert Thumbprint: GoalCert, ThumbprintSecondary: OldCert1 Thumbprint: GoalCert, ThumbprintSecondary: None
Thumbprint: OldCert1, ThumbprintSecondary: GoalCert, daha sonraki NotBefore bir tarihe OldCert1 sahiptirGoalCert Yükseltme Thumbprint: GoalCert, ThumbprintSecondary: None -
Thumbprint: GoalCert, ThumbprintSecondary: OldCert1, daha sonraki NotBefore bir tarihe OldCert1 sahiptirGoalCert Yükseltme Thumbprint: GoalCert, ThumbprintSecondary: None -
Thumbprint: OldCert1, ThumbprintSecondary: OldCert2 Durum bilgisi almak için veya'larından OldCert2 birini OldCert1 kaldırmaThumbprint: OldCertx, ThumbprintSecondary: None Yeni başlangıç durumundan devam et

Not

Sürüm 7.2.445 (7.2 CU4) öncesi bir sürümdeki küme için, yukarıdaki durumlarda ile NotAfter değiştirinNotBefore.

Bu yükseltmelerden herhangi birini gerçekleştirme yönergeleri için bkz. Azure Service Fabric kümesindeki sertifikaları yönetme.

Sonraki adımlar