قم باستيراد ملف شهادة إلى حاوية تعمل على تصميم الخدمة
ملاحظة
بالنسبة لمجموعات تصميم الخدمة التي تعمل على Azure، يوصى باستخدام الهوية المدارة لتطبيق تصميم الخدمة لتكوين إعدادات تشغيل الخدمة الخاصة بشهادات التطبيق من داخل حاوية. توفر الهوية المدارة عزلة البيانات السرية والشهادات على مستوى الخدمة، وتسمح بتكوين إعدادات تشغيل الخدمة الخاصة بشهادة التطبيق لتكون جزءًا من سير عمل التطبيق، بدلًا من سير عمل البنية الأساسية. سوف تهمل آلية CertificateRef في إصدار مستقبلي.
يمكنك تأمين خدمات الحاويات الخاصة بك عن طريق تحديد شهادة. يوفر تصميم الخدمة آلية للخدمات داخل حاوية للوصول إلى شهادة مثبتة على العُقَد في نظام مجموعة Windows أو Linux (الإصدار 5.7 أو ما بعده). يتعين تثبيت الشهادة في مخزن شهادات ضمن LocalMachine على كافة عُقَد نظام المجموعة. يجب أن يكون المفتاح الخاص المقابل للشهادة متاحًا ويمكن الوصول إليه وقابلًا للتصدير - على Windows. تتوفر معلومات الشهادة في بيان التطبيق أسفل ContainerHostPolicies العلامة كما يظهر القصاصة البرمجية التالية:
<ContainerHostPolicies CodePackageRef="NodeContainerService.Code">
<CertificateRef Name="MyCert1" X509StoreName="My" X509FindValue="[Thumbprint1]"/>
<CertificateRef Name="MyCert2" X509FindValue="[Thumbprint2]"/>
بالنسبة لنظام مجموعات Windows، عند بدء تشغيل التطبيق، يقوم وقت التشغيل بتصدير كل شهادة مرجعية ومفتاحها الخاص المقابل لها إلى ملف PFX، مؤمن بكلمة مرور تم إنشاؤها عشوائيا. يمكن الوصول إلى ملفات PFX وكلمة المرور، تباعًا، داخل الحاوية باستخدام متغيرات البيئة التالية:
- Certificates_ServicePackageName_CodePackageName_CertName_PFX
- Certificates_ServicePackageName_CodePackageName_CertName_Password
بالنسبة لنظام مجموعات Linux، تُنسخ الشهادات (PEM) من المتجر المحدد بواسطة X509StoreName إلى الحاوية. متغيرات البيئة المقابلة على Linux هي:
- Certificates_ServicePackageName_CodePackageName_CertName_PEM
- Certificates_ServicePackageName_CodePackageName_CertName_PrivateKey
يرجى ملاحظة أن كلًا من PEM الملف وPrivateKeyالملف يحتويان على الشهادة والمفتاح الخاص الغير مشفرين.
بدلًا من ذلك، إذا كان لديك بالفعل الشهادات في النموذج المطلوب وتريد الوصول إليها داخل الحاوية، يمكنك إنشاء حزمة بيانات داخل حزمة التطبيق وتحديد ما يلي داخل قائمة التطبيق الخاصة بك:
<ContainerHostPolicies CodePackageRef="NodeContainerService.Code">
<CertificateRef Name="MyCert1" DataPackageRef="[DataPackageName]" DataPackageVersion="[Version]" RelativePath="[Relative Path to certificate inside DataPackage]" Password="[password]" IsPasswordEncrypted="[true/false]"/>
تُعتبر خدمة أو عملية الحاوية هي المسؤولة عن استيراد ملفات الشهادة إلى الحاوية. لاستيراد الشهادة، يمكنك استخدام setupentrypoint.sh البرامج النصية أو تنفيذ تعليمات برمجية مخصصة داخل عملية الحاوية. فيما يلي نموذج التعليمات البرمجية في C # من أجل عملية استيراد ملف PFX:
string certificateFilePath = Environment.GetEnvironmentVariable("Certificates_MyServicePackage_NodeContainerService.Code_MyCert1_PFX");
string passwordFilePath = Environment.GetEnvironmentVariable("Certificates_MyServicePackage_NodeContainerService.Code_MyCert1_Password");
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
string password = File.ReadAllLines(passwordFilePath, Encoding.Default)[0];
password = password.Replace("\0", string.Empty);
X509Certificate2 cert = new X509Certificate2(certificateFilePath, password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
يمكن استخدام شهادة PFX هذه للمصادقة على التطبيق أو الخدمة أو الاتصال الآمن مع الخدمات الأخرى. بشكل افتراضي، يتم وضع الملفات في قائمة وضع التحكم في الوصول إلى النظام فقط. يمكنك إعداد قائمة التحكم بالوصول في الحسابات الأخري على النحو المطلوب في الخدمة
كخطوة تالية، اقرأ المقالات التالية: