تحويل شهادات نظام المجموعة من التعريفات المستندة إلى بصمة الإبهام إلى أسماء شائعة

توقيع الشهادة (المعروفة باسم بصمة الإبهام) فريد. تشير شهادة نظام المجموعة التي تم تعريفها بواسطة بصمة الإبهام إلى مثيل معين من الشهادة. هذه الخصوصية تجعل ترحيل شهادة، والإدارة بشكل عام، صعبة وصريحة. يتطلب كل تغيير تنسيق ترقيات نظام المجموعة ومضيفي الحوسبة الأساسية.

يؤدي تحويل تعريفات شهادات مجموعة Azure Service Fabric من إعلانات تستند إلى بصمة الإبهام إلى إعلانات تستند إلى اسم موضوع الشهادة (CN) الشائع إلى تبسيط الإدارة إلى حد كبير. بشكل خاص، لم يعد يتطلب ترحيل شهادة ترقية نظام مجموعة. توضح هذه المقالة كيفية تحويل نظام مجموعة موجود إلى إعلانات تستند إلى CN دون توقف.

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

الانتقال إلى شهادات موقعة من المرجع المصدق

يعتمد أمان نظام المجموعة التي يتم الإعلان عن شهادتها ببصمة الإبهام على حقيقة أنه من المستحيل، أو غير الممكن حسابيًا، تزوير شهادة بنفس التوقيع الذي يحمل توقيعًا آخر. في هذه الحالة، يكون مصدر الشهادة أقل أهمية، لذا فإن الشهادات الموقعة ذاتيًا كافية.

وعلى النقيض من ذلك، فإن أمن مجموعة يتم الإعلان عن شهاداتها من قبل CN ينبع من الثقة الضمنية التي يتمتع بها مالك المجموعة في مزود الشهادات الخاص به. الموفر هو خدمة البنية التحتية للمفتاح العمومي (PKI) التي أصدرت الشهادة. وتستند الثقة، من بين عوامل أخرى، إلى ممارسات إصدار الشهادات الخاصة بمرافق المفاتيح العمومية، وما إذا كان أمنها التشغيلي يخضع للتدقيق والموافقة عليه من قبل أطراف أخرى موثوق بها، وما إلى ذلك.

يجب أن يكون لدى مالك المجموعة أيضًا معرفة مفصلة بالمراجع المصدقة (CAs) التي تصدر شهاداتها، لأن هذا جانب أساسي من جوانب التحقق من صحة الشهادات حسب الموضوع. وهذا يعني أيضًا أن الشهادات الموقعة ذاتيًا غير مناسبة تمامًا لهذا الغرض. حرفيًا يمكن لأي شخص إنشاء شهادة مع موضوع معين.

عادة ما تعتبر الشهادة التي تعلنها CN صالحة إذا:

  • يمكن بناء سلسلتها بنجاح.
  • يحتوي الموضوع على عنصر CN المتوقع.
  • المصدر الخاص به (فوري أو أعلى في السلسلة) موثوق به من قبل العامل الذي يقوم بالتحقق من الصحة.

يدعم Service Fabric الإعلان عن الشهادات بواسطة CN بطريقتين:

  • مع المصدرين الضمنيين، مما يعني أن السلسلة يجب أن تنتهي في مرساة ثقة.
  • مع المُصدرين التي أعلن عنها ببصمة الإبهام، والذي يعرف باسم تثبيت المُصدر.

لمزيد من المعلومات، راجع تعريفات التحقق من صحة الشهادة المستندة إلى الاسم العام.

لتحويل نظام مجموعة باستخدام شهادة موقعة ذاتيًا تم تعريفها بواسطة بصمة الإبهام إلى CN الهدف، يجب أولًا إدخال الشهادة CA-الموقعة في نظام المجموعة بواسطة بصمة الإبهام. عندها فقط يكون التحويل من بصمة الإبهام إلى CN ممكنًا.

لأغراض الاختبار، يمكن أن تعلن CN عن شهادة موقعة ذاتيًا، ولكن فقط إذا تم تثبيت المصدر على بصمة الإبهام الخاصة به. من وجهة نظر أمنية، يعادل هذا الإجراء تقريبًا إعلان نفس الشهادة ببصمة الإبهام. لا يضمن التحويل الناجح من هذا النوع تحويلًا ناجحًا من بصمة الإبهام إلى CN بشهادة موقعة من CA. نوصيك باختبار التحويل باستخدام شهادة مناسبة موقعة من المرجع المصدق. توجد خيارات مجانية لهذا الاختبار.

رفع الشهادة وتثبيتها في مجموعة المقاييس

في Azure، تتضمن الآلية الموصى بها للحصول على الشهادات وتوفيرها Azure Key Vault وأدواتها. يجب توفير شهادة مطابقة لإعلان شهادة نظام المجموعة لكل عقدة من مجموعات مقياس الجهاز الظاهري التي تضم مجموعتك. لمزيد من المعلومات، راجع أسرار على مجموعات مقياس الجهاز الظاهري.

من المهم تثبيت كل من شهادات المجموعة الحالية والمستهدفة على الأجهزة الظاهرية لكل نوع عقدة من المجموعة قبل إجراء تغييرات في تعريفات شهادات المجموعة. تتم مناقشة الرحلة من إصدار الشهادة إلى توفير عقدة Service Fabric بعمق في رحلة الشهادة.

اجعل المجموعة في حالة بدء مثالية

تحويل إعلان شهادة من تأثيرات تستند إلى بصمة الإبهام إلى تأثيرات تستند إلى CN:

  • كيف تعثر كل عقدة في المجموعة على بيانات اعتمادها وتقدمها إلى العقد الأخرى.
  • كيف تتحقق كل عقدة من صحة بيانات اعتماد نظيرتها عند إنشاء اتصال آمن.

راجع قواعد العرض التقديمي والتحقق من الصحة لكلا التكوينين قبل المتابعة. الاعتبار الأكثر أهمية عند إجراء تحويل بصمة الإبهام إلى CN هو أن العقد التي تمت ترقيتها والتي لم تتم ترقيتها بعد (أي العقد التي تنتمي إلى مجالات ترقية مختلفة) يجب أن تكون قادرة على إجراء مصادقة متبادلة ناجحة في أي وقت في أثناء الترقية. الطريقة الموصى بها لتحقيق هذا السلوك هو تعريف الهدف أو شهادة الهدف بواسطة بصمة الإبهام في ترقية أولية. ثم إكمال الانتقال إلى CN في واحدة لاحقة. إذا كان نظام المجموعة بالفعل في حالة بدء موصى بها، يمكنك تخطي هذا القسم.

هناك عدة حالات بداية صالحة للتحويل. الثابت هو أن نظام المجموعة بالفعل يستخدم الشهادة الهدف (تم تعريفه بواسطة بصمة الإبهام) في بداية الترقية إلى CN. نأخذ في الاعتبار GoalCert وOldCert1 وOldCert2 في هذه المقالة.

حالات البدء الصالحة

  • Thumbprint: GoalCert, ThumbprintSecondary: None
  • Thumbprint: GoalCert, ThumbprintSecondary: OldCert1، حيث لـGoalCert تاريخ NotBefore لاحق عن تاريخ OldCert1
  • Thumbprint: OldCert1, ThumbprintSecondary: GoalCert، حيث لـGoalCert تاريخ NotBefore لاحق عن تاريخ OldCert1

إشعار

قبل الإصدار 7.2.445 (7.2 CU4)، اختارت Service Fabric أبعد شهادة منتهية الصلاحية (الشهادة ذات أبعد خاصية "NotAfter")، لذا فإن حالات البدء المذكورة أعلاه قبل 7.2 CU4 تتطلب أن يكون لـGoalCert تاريخ لاحق NotAfter من OldCert1

إذا لم تكن مجموعتك في إحدى الحالات الصالحة التي تم وصفها مسبقًا، راجع معلومات حول تحقيق هذه الحالة في القسم في نهاية هذه المقالة.

تحديد نظام التحقق من صحة الشهادة المعتمد على CN المطلوب

كما هو موضح سابقًا، تدعم Service Fabric الإعلان عن الشهادات من قبل CN باستخدام مرساة ثقة ضمنية أو مع تثبيت بصمات إبهام المصدر بشكل صريح. لمزيد من المعلومات، راجع تعريفات التحقق من صحة الشهادة المستندة إلى الاسم العام.

تأكد من أن لديك فهمًا جيدًا للاختلافات والآثار المترتبة على اختيار أي من الآليتين. حسب البناء، يتم تحديد هذا الاختلاف أو الاختيار من خلال قيمة المعلمة certificateIssuerThumbprintList. يعني الفارغ الاعتماد على المرجع المصدق الجذر الموثوق به (ارتساء الثقة)، بينما مجموعة من بصمات الإبهام يقيد المصدرين المباشرين المسموح بها من شهادات نظام المجموعة.

إشعار

يسمح لك الحقل certificateIssuerThumbprint بتحديد المصدرين المباشرين المتوقعين للشهادات المعلنة من قبل CN الموضوع. القيم المقبولة هي بصمة إبهام SHA1 أو أكثر مفصولة بفاصلة. يعزز هذا الإجراء التحقق من صحة الشهادة.

إذا لم يتم تحديد المصدرين أو كانت القائمة فارغة، سيتم قبول الشهادة للمصادقة إذا كان يمكن إنشاء السلسلة الخاصة بها. ثم ينتهي الأمر بالشهادة في جذر موثوق به من قبل المدقق. إذا تم تحديد بصمة إبهام واحدة أو أكثر من بصمة إبهام المصدر، سيتم قبول الشهادة إذا تطابقت بصمة الإبهام الخاصة بالمصدر المباشر، كما تم استخراجها من السلسلة، مع أي من القيم المحددة في هذا الحقل. سيتم قبول الشهادة سواء كان الجذر موثوقًا به أم لا.

وقد يستخدم مرفق المفاتيح العمومية سلطات تصديق مختلفة (تعرف أيضا باسم المصدرين) لتوقيع الشهادات مع موضوع معين. لهذا السبب، من المهم تحديد جميع بصمات إبهام المصدر المتوقعة لهذا الموضوع. وبعبارة أخرى، لا يضمن تجديد الشهادة أن يتم توقيعه من قبل نفس المصدر مثل الشهادة التي يتم تجديدها.

يعتبر تحديد المصدر من أفضل الممارسات. سيستمر حذف جهة الإصدار في العمل على الشهادات التي تصل إلى جذر موثوق به، ولكن هذا السلوك له قيود وقد يتم التخلص منه تدريجيًا في المستقبل القريب. قد لا تتمكن المجموعات التي تم نشرها في Azure، والمضمونة بشهادات X509 الصادرة عن PKI خاص، والمعلن عنها حسب الموضوع، من التحقق من صحتها بواسطة Service Fabric (للاتصال من مجموعة إلى خدمة). يتطلب التحقق من الصحة نهج الشهادة PKI أن يكون قابلًا للاكتشاف ومتاحًا ويمكن الوصول إليه.

تحديث قالب Azure Resource Manager الخاص بالمجموعة ونشره

قم بإدارة مجموعات Service Fabric باستخدام قوالب Azure Resource Manager (ARM). البديل، الذي يستخدم أيضا عناصر JSON، هو Azure Resource Explorer. لا تتوفر تجربة مكافئة في مدخل Microsoft Azure حاليًا.

إذا لم يكن القالب الأصلي المقابل لمجموعة موجودة متاحًا، فيمكن الحصول على قالب مكافئ في مدخل Microsoft Azure. انتقل إلى مجموعة الموارد التي تحتوي على المجموعة، وحدد تصدير القالب من قائمة التنفيذ التلقائي على اليمين. حدد الموارد التي تريدها. كحد أدنى، يجب تصدير مجموعة مقياس الجهاز الظاهري وموارد نظام المجموعة على التوالي. يمكن أيضًا تنزيل القالب الذي تم إنشاؤه. قد يتطلب هذا القالب تغييرات قبل أن يصبح قابلًا للنشر بالكامل. قد لا يتطابق القالب أيضًا مع القالب الأصلي بالضبط. إنه انعكاس للحالة الحالية لمورد نظام المجموعة.

التغييرات اللازمة كما يلي:

  • تحديث تعريف ملحق عقدة نسيج الخدمة (ضمن مورد الجهاز الظاهري). إذا كان نظام المجموعة يحدد أنواعًا متعددة من العقد، فستحتاج إلى تحديث تعريف كل مجموعة مقياس جهاز ظاهري مقابلة.
  • تحديث تعريف مورد نظام المجموعة.

أمثلة مفصلة متاحة هنا.

تحديث موارد مجموعة مقياس الآلة الظاهرية

من:

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

إلى:

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

تحديث مورد نظام المجموعة

في مورد Microsoft.ServiceFabric/clusters إضافة خاصية CertificateCommonNames مع إعداد commonNames وإزالة خاصية الشهادة تمامًا (كافة الإعدادات الخاصة به).

من:

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

إلى:

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

لمزيد من المعلومات، راجع نشر مجموعة Service Fabric التي تستخدم الاسم الشائع للشهادة بدلًا من بصمة الإبهام.

نشر القالب المحدّث

أعد نشر القالب المحدث بعد إجراء التغييرات.

$groupname = "sfclustertutorialgroup"

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

تحقيق حالة بدء صالحة لتحويل مجموعة إلى تعريفات شهادات معتمدة على CN

حالة البدء الترقية 1 الترقية 2
Thumbprint: OldCert1, ThumbprintSecondary: None ولها GoalCert تاريخ لاحق NotBefore عن OldCert1 Thumbprint: OldCert1, ThumbprintSecondary: GoalCert -
Thumbprint: OldCert1, ThumbprintSecondary: None ولها OldCert1 تاريخ لاحق NotBefore عن GoalCert Thumbprint: GoalCert, ThumbprintSecondary: OldCert1 Thumbprint: GoalCert, ThumbprintSecondary: None
Thumbprint: OldCert1, ThumbprintSecondary: GoalCert، حيث لـOldCert1 تاريخ NotBefore لاحق عن GoalCert الترقية إلى Thumbprint: GoalCert, ThumbprintSecondary: None -
Thumbprint: GoalCert, ThumbprintSecondary: OldCert1، حيث لـOldCert1 تاريخ NotBefore لاحق عن GoalCert الترقية إلى Thumbprint: GoalCert, ThumbprintSecondary: None -
Thumbprint: OldCert1, ThumbprintSecondary: OldCert2 إزالة واحدة من OldCert1 أو OldCert2 للوصول إلى الحالة Thumbprint: OldCertx, ThumbprintSecondary: None المتابعة من حالة البدء الجديدة

إشعار

بالنسبة إلى نظام مجموعة على إصدار سابق للإصدار 7.2.445 (7.2 CU4)، استبدل NotBefore بـNotAfter في الحالات المذكورة أعلاه.

للحصول على إرشادات حول كيفية تنفيذ أي من هذه الترقيات، راجع إدارة الشهادات في نظام مجموعة Azure Service Fabric.

الخطوات التالية