الاتصال بخدمة آمنة باستخدام الوكيل العكسي

توضح هذه المقالة كيفية إنشاء اتصال آمن بين الوكيل العكسي والخدمات، وبالتالي تمكين قناة آمنة من طرف إلى طرف. لمعرفة المزيد حول الوكيل العكسي، راجع الوكيل العكسي في Azure Service Fabric

هام

يُدعم الاتصال بالخدمات الآمنة فقط عند تكوين الوكيل العكسي للانصات على HTTPS. تفترض هذه المقالة أن هذه هي الحالة. راجع إعداد الوكيل العكسي في Azure Service Fabric لتكوين الوكيل العكسي في "تصميم الخدمة".

إنشاء اتصال آمن بين الوكيل العكسي والخدمات

مصادقة الوكيل العكسي للخدمات:

يُعرّف الوكيل العكسي نفسه للخدمات باستخدام شهادته. بالنسبة لأنظمة مجموعات Azure، تُحدد الشهادة باستخدام الخاصية reverseProxyCertificate في قسم نوع الموردMicrosoft.ServiceFabric/clustersResource من قالب Resource Manager. بالنسبة للمجموعات المستقلة، يتم تحديد الشهادة إما باستخدام الخاصية ReverseProxyCertificate أو الخاصية ReverseProxyCertificateCommonNames في قسم "Security" من ClusterConfig.json. لمعرفة المزيد، راجع تمكين الوكيل العكسي في المجموعات المستقلة.

يمكن للخدمات تنفيذ المنطق للتحقق من الشهادة المُقدمة من الوكيل العكسي. يمكن للخدمات تحديد تفاصيل شهادة العميل المقبولة كإعدادات تكوين في حزمة التكوين. يمكن قراءة هذا في وقت التشغيل واستخدامه للتحقق من صحة الشهادة المقدمة من الوكيل العكسي. ارجع إلى إدارة معلمات التطبيق لإضافة إعدادات التكوين.

تحقُق الوكيل العكسي من هوية الخدمة عبر الشهادة المقدمة من الخدمة:

يدعم الوكيل العكسي النُهج التالية لإجراء التحقق من صحة شهادة الخادم للشهادات التي تقدمها الخدمات: None وServiceCommonNameAndIssuer وServiceCertificateThumbprints. لتحديد نهج الوكيل العكسي المُستخدم، حدد "ApplicationCertificateValidationPolicy" في القسم "ApplicationGateway/Http" ضمن "fabricSettings".

يعرض القسم التالي تفاصيل التكوين لكل خيار من هذه الخيارات.

خيارات التحقق من صحة شهادة الخدمة

  • "None": يتخطى الوكيل العكسي التحقق من شهادة الخدمة الوكيلة ويؤسس الاتصال الآمن. هذا هو السلوك الافتراضي. حدد "ApplicationCertificateValidationPolicy" بقيمة "None" في القسم "ApplicationGateway/Http".

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                   {
                     "name": "ApplicationCertificateValidationPolicy",
                     "value": "None"
                   }
                 ]
               }
             ],
             ...
    }
    
  • ServiceCommonNameAndIssuer: يتحقق الوكيل العكسي من الشهادة التي تقدمها الخدمة استناداً إلى الاسم الشائع للشهادة وبصمة إبهام مصدر الشهادة الفوري: حدد "ApplicationCertificateValidationPolicy" بقيمة "ServiceCommonNameAndIssuer" في قسم "ApplicationGateway/Http".

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                   {
                     "name": "ApplicationCertificateValidationPolicy",
                     "value": "ServiceCommonNameAndIssuer"
                   }
                 ]
               }
             ],
             ...
    }
    

    لتحديد قائمة الاسم الشائع للخدمة وبصمات إبهام مصدر الشهادة، أضف قسم ApplicationGateway/Http/ServiceCommonNameAndIssuer ضمن "fabricSettings"، كما هو موضح أدناه. يمكن إضافة أزواج متعددة من الأسماء الشائعة للشهادة وأزواج بصمات إبهام مصدر الشهادة في صفيف المعلمات.

    إذا كان الوكيل العكسي لنقطة النهاية متصلاً لتقديم شهادة يتطابق اسمها الشائع وبصمة إبهام مصدر الشهادة مع أي من القيم المحددة هنا، فيتم إنشاء قناة TLS. عند الفشل في مطابقة تفاصيل الشهادة، يفشل الوكيل العكسي في طلب العميل برمز حالة 502 ( بوابة غير صالحة). سيحتوي سطر حالة HTTP أيضاً على عبارة "شهادة SSL غير صالحة".

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http/ServiceCommonNameAndIssuer",
                 "parameters": [
                   {
                     "name": "WinFabric-Test-Certificate-CN1",
                     "value": "b3 44 9b 01 8d 0f 68 39 a2 c5 d6 2b 5b 6c 6a c8 22 b4 22 11"
                   },
                   {
                     "name": "WinFabric-Test-Certificate-CN2",
                     "value": "b3 44 9b 01 8d 0f 68 39 a2 c5 d6 2b 5b 6c 6a c8 22 11 33 44"
                   }
                 ]
               }
             ],
             ...
    }
    
  • ServiceCertificateThumbprints: سيتحقق الوكيل العكسي من شهادة الخدمة الوكيلة استناداً إلى بصمة الإبهام الخاصة بها. يمكنك اختيار السير في هذا المسار عند تكوين الخدمات باستخدام شهادات موقعة ذاتياً: حدد "ApplicationCertificateValidationPolicy" مع القيمة "ServiceCertificateThumbprints" في القسم "ApplicationGateway/Http".

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                   {
                     "name": "ApplicationCertificateValidationPolicy",
                     "value": "ServiceCertificateThumbprints"
                   }
                 ]
               }
             ],
             ...
    }
    

    حدد أيضاً بصمات الإبهام باستخدام إدخال "ServiceCertificateThumbprints" في القسم "ApplicationGateway/Http". يمكن تحديد بصمات إبهام متعددة كقائمة مفصولة بفصلات في حقل القيمة، كما هو موضح أدناه:

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                     ...
                   {
                     "name": "ServiceCertificateThumbprints",
                     "value": "78 12 20 5a 39 d2 23 76 da a0 37 f0 5a ed e3 60 1a 7e 64 bf,78 12 20 5a 39 d2 23 76 da a0 37 f0 5a ed e3 60 1a 7e 64 b9"
                   }
                 ]
               }
             ],
             ...
    }
    

    إذا كانت بصمة إبهام شهادة الخادم مُدرجة في إدخال التكوين هذا، فإن الوكيل العكسي يتبع اتصال TLS. خلاف ذلك، يُنهي الاتصال ويفشل طلب العميل باستخدام 502 (بوابة غير صالحة). سيحتوي سطر حالة HTTP أيضاً على عبارة "شهادة SSL غير صالحة".

منطق اختيار نقطة النهاية عند عرض خدمات نقاط النهاية الآمنة وغير الآمنة

يدعم "تصميم الخدمة" تكوين نقاط نهاية متعددة للخدمة. لمزيد من المعلومات، راجع تحديد الموارد في بيان خدمة.

يحدد الوكيل العكسي إحدى نقاط النهاية لإعادة توجيه الطلب استناداً إلى معلمة استعلام ListenerName في خدمة URI. إذا لم يتم تحديد المعلمة ListenerName، فيمكن للوكيل العكسي اختيار أي نقطة نهاية من قائمة نقاط النهاية. استناداً إلى نقاط النهاية المكوّنة للخدمة، يمكن أن تكون نقطة النهاية المحددة نقطة نهاية HTTP أو HTTPS. قد تكون هناك سيناريوهات أو متطلبات حيث تريد أن يعمل الوكيل العكسي في "وضع آمن فقط"؛ أي أنك لا تريد أن يقوم الوكيل العكسي الآمن بإعادة توجيه الطلبات إلى نقاط نهاية غير آمنة. لتعيين الوكيل العكسي إلى الوضع الآمن فقط، حدد إدخال تكوين "SecureOnlyMode" بقيمة "true" في قسم "ApplicationGateway/Http".

{
"fabricSettings": [
          ...
          {
            "name": "ApplicationGateway/Http",
            "parameters": [
                ...
              {
                "name": "SecureOnlyMode",
                "value": true
              }
            ]
          }
        ],
        ...
}

ملاحظة

عند التشغيل في SecureOnlyMode، إذا قام عميل بتحديد "ListenerName" يتوافق مع نقطة نهاية HTTP (غير آمنة)، فإن الوكيل العكسي يفشل الطلب باستخدام رمز حالة HTTP 404 (غير موجود).

إعداد مصادقة شهادة العميل من خلال الوكيل العكسي

يحدث إنهاء TLS في الوكيل العكسي وتُفقد جميع بيانات شهادة العميل. بالنسبة للخدمات اللازمة لإجراء مصادقة شهادة العميل، حدد إعداد "ForwardClientCertificate" في القسم "ApplicationGateway/Http".

  1. عند تعيين "ForwardClientCertificate" إلى "false"، لن يطلب الوكيل العكسي شهادة العميل أثناء تأكيد اتصال TLS مع العميل. هذا هو السلوك الافتراضي.

  2. عند تعيين "ForwardClientCertificate" إلى "true"، يطلب الوكيل العكسي شهادة العميل أثناء تأكيد اتصال TLS مع العميل. ثم سيُعيد توجيه بيانات شهادة العميل في عنوان HTTP مخصص يُسمى X-Client-Certificate. قيمة العنوان هي سلسلة تنسيق PEM المُشفرة base64 لشهادة العميل. يمكن أن تنجح الخدمة / تفشل في الطلب باستخدام رمز الحالة المناسب بعد فحص بيانات الشهادة. إذا لم يقدم العميل شهادة، فسيقوم الوكيل العكسي بإعادة توجيه عنوان فارغ والسماح للخدمة بالتعامل مع الحالة.

ملاحظة

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

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