الشهادات والأمان على أنظمة مجموعات Linux

توفر هذه المقالة معلومات حول تكوين شهادات X.509 على أنظمة مجموعات Linux.

موقع شهادات X.509 وتنسيقها على عُقد Linux

يتوقع Service Fabric بشكل عام أن تكون شهادات X.509 موجودة في الدليل /var/lib/sfcerts على عُقد أنظمة مجموعات Linux. وينطبق هذا على شهادات أنظمة المجموعات وشهادات العميل وما إلى ذلك. في بعض الحالات، يمكنك تحديد موقع آخر غير مجلد var/lib/sfcerts للشهادات. على سبيل المثال، باستخدام الخدمات الموثوقة التي تم إنشاؤها باستخدام Service Fabric Java SDK، يمكنك تحديد موقع مختلف من خلال حزمة التكوين (Settings.xml) لبعض الشهادات الخاصة بالتطبيقات. لمعرفة المزيد، راجع الشهادات المشار إليها في حزمة التكوين (Settings.xml).

بالنسبة لأنظمة مجموعات Linux، يتوقع Service Fabric أن تكون الشهادات موجودة إما كملف ‎.pem يحتوي على كل من الشهادة والمفتاح الخاص أو كملف ‎.crt يحتوي على الشهادة وملف ‎.key يحتوي على المفتاح الخاص. يجب أن تكون جميع الملفات بتنسيق PEM.

إذا قمت بتثبيت الشهادة من Azure Key Vault باستخدام قالب Resource Manager أو أوامر PowerShell، فإنه يتم تثبيت الشهادة بالتنسيق الصحيح في الدليل /var/lib/sfcerts على كل عقدة. إذا قمت بتثبيت شهادة من خلال طريقة أخرى، يتعين عليك التأكد من تثبيت الشهادة بشكل صحيح على عُقد نظام المجموعة.

الشهادات المشار إليها في بيان التطبيق

يتعين أن تكون الشهادات المحددة في بيان التطبيق، على سبيل المثال، من خلال عناصر SecretsCertificate أو EndpointCertificate، موجودة في الدليل /var/lib/sfcerts. العناصر المستخدمة لتحديد الشهادات في بيان التطبيق لا تأخذ سمة مسار، لذلك يتعين أن تكون الشهادات موجودة في الدليل الافتراضي. تأخذ هذه العناصر سمة X509StoreName اختيارية. القيمة الافتراضية هي "My"، والتي تشير إلى الدليل /var/lib/sfcerts على عُقد Linux. أي قيمة أخرى غير معرّفة على نظام مجموعة Linux. نوصي بحذف السمة X509StoreName للتطبيقات التي تعمل على أنظمة مجموعات Linux.

الشهادات المشار إليها في حزمة التكوين (Settings.xml)

بالنسبة لبعض الخدمات، يمكنك تكوين شهادات X.509 في ConfigPackage (بشكل افتراضي، Settings.xml). على سبيل المثال، هذا هو الحال عند الإعلان عن الشهادات المستخدمة لتأمين قنوات RPC للخدمات الموثوقة التي تم إنشاؤها باستخدام Service Fabric .NET Core أو Java SDKs. هناك طريقتان للإشارة إلى الشهادات في حزمة التكوين. يختلف الدعم بين ‎.NET Core وJava SDKs.

استخدام X509 SecurityCredentialsType

من خلال ‎.NET أو Java SDKs، يمكنك تحديد X509 لـ SecurityCredentialsType. يتوافق هذا مع النوع X509Credentials (‎.NET/Java) من SecurityCredentials (‎.NET/Java).

يحدد المرجع X509 موقع الشهادة في مخزن الشهادات. يعرض XML التالي المعلمات المستخدمة لتحديد موقع الشهادة:

    <Parameter Name="SecurityCredentialsType" Value="X509" />
    <Parameter Name="CertificateStoreLocation" Value="LocalMachine" />
    <Parameter Name="CertificateStoreName" Value="My" />

بالنسبة لخدمة تعمل على Linux، يشير LocalMachine/My إلى الموقع الافتراضي للشهادات، الدليل /var/lib/sfcerts. بالنسبة لنظام التشغيل Linux، فإن أي مجموعات أخرى من CertificateStoreLocation وCertificateStoreName تكون غير محددة.

حدد دائمًا LocalMachine للمعلمة CertificateStoreLocation. ليست هناك حاجة لتحديد المعلمة CertificateStoreName لأنه يتم تعيينها افتراضيًا إلى "My". باستخدام مرجع X509، يتعين أن تكون ملفات الشهادات موجودة في الدليل /var/lib/sfcerts على عُقدة نظام المجموعة.

يعرض XML التالي مقطع TransportSettings استنادًا إلى هذا النمط:

<Section Name="HelloWorldStatefulTransportSettings">
    <Parameter Name="MaxMessageSize" Value="10000000" />
    <Parameter Name="SecurityCredentialsType" Value="X509" />
    <Parameter Name="CertificateFindType" Value="FindByThumbprint" />
    <Parameter Name="CertificateFindValue" Value="4FEF3950642138446CC364A396E1E881DB76B48C" />
    <Parameter Name="CertificateRemoteThumbprints" Value="9FEF3950642138446CC364A396E1E881DB76B483" />
    <Parameter Name="CertificateStoreLocation" Value="LocalMachine" />
    <Parameter Name="CertificateProtectionLevel" Value="EncryptAndSign" />
    <Parameter Name="CertificateRemoteCommonNames" Value="ServiceFabric-Test-Cert" />
</Section>

استخدام X509_2 SecurityCredentialsType

من خلال Java SDK، يمكنك تحديد X509_2 لـ SecurityCredentialsType. يتوافق هذا مع النوع X509Credentials2 (Java) من SecurityCredentials (Java).

باستخدام مرجع X509_2، يمكنك تحديد معلمة مسار، بحيث يمكنك تحديد موقع الشهادة في دليل آخر غير /var/lib/sfcerts. يعرض XML التالي المعلمات المستخدمة لتحديد موقع الشهادة:

     <Parameter Name="SecurityCredentialsType" Value="X509_2" />
     <Parameter Name="CertificatePath" Value="/path/to/cert/BD1C71E248B8C6834C151174DECDBDC02DE1D954.crt" />

يعرض XML التالي مقطع TransportSettings استنادًا إلى هذا النمط.

<!--Section name should always end with "TransportSettings".-->
<!--Here we are using a prefix "HelloWorldStateless".-->
<Section Name="HelloWorldStatelessTransportSettings">
    <Parameter Name="MaxMessageSize" Value="10000000" />
    <Parameter Name="SecurityCredentialsType" Value="X509_2" />
    <Parameter Name="CertificatePath" Value="/path/to/cert/BD1C71E248B8C6834C151174DECDBDC02DE1D954.crt" />
    <Parameter Name="CertificateProtectionLevel" Value="EncryptandSign" />
    <Parameter Name="CertificateRemoteThumbprints" Value="BD1C71E248B8C6834C151174DECDBDC02DE1D954" />
</Section>

إشعار

يتم تحديد الشهادة كملف ‎.crt في XML السابق. هذا يعني أن هناك أيضًا ملف ‎.key يحتوي على المفتاح الخاص في نفس الموقع.

تكوين تطبيق خدمات موثوقة للتشغيل على أنظمة مجموعات Linux

تسمح لك Service Fabric SDKs بالتواصل مع واجهات برمجة تطبيقات وقت تشغيل Service Fabric للاستفادة من النظام الأساسي. عند تشغيل أي تطبيق يستخدم هذه الوظيفة على أنظمة مجموعات Linux الآمنة، تحتاج إلى تكوين التطبيق الخاص بك مع شهادة يمكنه استخدامها للتحقق من الصحة مع وقت تشغيل Service Fabric. تتطلب التطبيقات التي تحتوي على خدمات موثوقة لـ Service Fabric المكتوبة باستخدام ‎.NET Core أو Java SDKs هذا التكوين.

لتكوين تطبيق، أضف عنصر SecretsCertificate ضمن علامة الشهادات، الموجودة ضمن علامة ApplicationManifest في ملف ApplicationManifest.xml. يعرض XML التالي شهادة مشار إليها ببصمة الإبهام:

   <Certificates>
       <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="0A00AA0AAAA0AAA00A000000A0AA00A0AAAA00" />
   </Certificates>   

يمكنك الرجوع إما إلى شهادة نظام المجموعة أو شهادة تقوم بتثبيتها على كل عقدة نظام مجموعة. على Linux، يتعين أن تكون ملفات الشهادات موجودة في الدليل /var/lib/sfcerts. لمعرفة المزيد، راجع موقع شهادات X.509 وتنسيقها على عقد Linux.