كيف يمكنني استخدام ssl البدل شهادة مصادقة متبادلة عدة WCF الخوادم عبر X509?

StackOverflow https://stackoverflow.com/questions/1630968

  •  06-07-2019
  •  | 
  •  

سؤال

لقد حصلت على اثنين من WCF خوادم ، سواء على المجال mydomain.com (خيالية سبيل المثال ، كما هي IP أدناه !), على التوالي اسمه server1 و server2.

وكلاهما يمكن الوصول إليها من خلال عناوين IP العامة (فو.1 و 2) ، ولكن أيضا من القطاع الخاص لان هم على (أي 192.168.0.1 و 192.168.0.2)

وأنا أملك البدل ssl شهادة *.mydomain.com.تثبيته بشكل صحيح في مخازن ذات الصلة (أي الشخصية التشفير و ثقة العملاء من أجل المصادقة)

أود كلا ملقمات للتواصل مع بعضها البعض على عناوين الشبكة المحلية باستخدام البدل شهادة لأغراض التوثيق.

لقد قمت بتحديث C:\Windows\System32\drivers\etc\hosts الملف لجعلها تبدو مثل هذا :

192.168.0.1     Server1.mydomain.com
192.186.0.2     Server2.mydomain.com

هذه ليست عناوين IP أنا حل Server1.mydomain.com (بدلا من ذلك سوف تحصل على foo.1 - 2)

لقد تحريرها أيضا الاتصال لاحقة DNS خاصة لبلدي IPV4 المحلية واجهات "mydomain.com"

شهادة يشار إلى مثل هذا في الخادم.ملفات التكوين (لقد جردت جميع أجزاء لا علاقة التوثيق)

        <behavior name="ServerToServerBehavior" >
          <serviceCredentials>
            <clientCertificate>
              <authentication certificateValidationMode="PeerOrChainTrust" revocationMode="Online"/>
            </clientCertificate>
            <serviceCertificate x509FindType="FindByThumbprint" findValue="13a41b3456e431131cd461de"/>
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="myServerAsClientBehaviorConfiguration">
          <clientCredentials>
            <clientCertificate x509FindType="FindByThumbprint" findValue="13a41b3456e431131cd461de" storeLocation="LocalMachine"/>
            <serviceCertificate>
              <authentication certificateValidationMode="PeerOrChainTrust" revocationMode="Online" trustedStoreLocation="LocalMachine"/>
            </serviceCertificate>
          </clientCredentials>
        </behavior>
      </endpointBehaviors>

هذا يعمل بشكل جيد تماما على بلدي ديف الكمبيوتر مع المولدة محليا X509 شهادات في بيئة الإنتاج ، هنا ما حصلت عليه :

الملقم.الاتصال :فشل الاتصال خادم Server2 :النظام.ServiceModel.الأمن.MessageSecurityException:الهوية فشل التحقق الصادرة رسالة.المتوقع DNS هوية نقطة النهاية البعيدة كان 'server2.mydomain.com' ولكن عن بعد نقطة النهاية قدمت DNS المطالبة 'mydomain.com'.إذا كان هذا هو المشروعة بعد نقطة النهاية ، يمكنك حل المشكلة عن طريق صراحة تحديد DNS الهوية 'mydomain.com' هوية المنشأة من EndpointAddress عند إنشاء القناة وكيل.

حاولت الخادم إلى إجابة Server2.mydomain.com بدلا من مجرد mydomain.com دون نجاح.أي تلميح حول كيفية فعل هذا ؟

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

تحرير :لقد تحقق مع شهادة مزود أنه لا يمكن في الواقع استخدامه X509 المصادقة.

هل كانت مفيدة؟

المحلول

أنا في نهاية المطاف فهم لماذا هويتي مجال كان يجري تجاهلها.

بلدي نقطة النهاية تم بناء مثل هذا :

DistantServer = new ServiceReferenceServerToServer.ServerToServerClient("myServerBinding", "net.tcp://server.mydomain.com/Server");

عندما uri المعلمة ، DNS الهوية مجال (المعرفة في التطبيق.التكوين) ، هو تجاوز وكذلك (حتى إذا كان فارغا ، كما هو الحال عندما نستخدم سلسلة بدلا من الحقيقي URI كائن).

الحل هو تعيين برمجيا باستخدام التعليمات البرمجية التالية :

        System.ServiceModel.EndpointAddress uri = new System.ServiceModel.EndpointAddress(new Uri("net.tcp://server.mydomain.com/Server"),new System.ServiceModel.DnsEndpointIdentity("mydomain.com"),new System.ServiceModel.Channels.AddressHeader[0]);

        DistantServer = new ServiceReferenceServerToServer.ServerToServerClient("myServerBinding", uri );

نصائح أخرى

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

لأي سبب من الأسباب كنت لا تستخدم النقل الأمن ؟ أسهل بكثير من الحصول على عمل إلا إذا كنت قد حصلت المتوسطة Layer7 التوجيه...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top