سؤال

وأنا migth لديك سؤال آخر حول SSL.

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

ودعونا نقول أنني أريد أن يبقيه تماما "ClickOnce"، وهذا يعني أنني لا تريد أن يكون لها أي علاقة على جهاز العميل باستثناء تشغيل ClickOnce = أنا لا أريد أن يكون لتثبيت الشهادة على جهاز العميل يدويا (أو لا) ولكن أريد أن يكون ذلك تثبيت مسبق للعميل الذكية. وأود أن تدرجه في حزمة وسوف يكون أول شيء ليتم تثبيتها.

ومشكلتي هي:

وكما قرأت على الإنترنت، ليس هناك طريقة يمكن تثبيت "المصدقة الجذر الموثوق بها السلطات" دون الحاجة حقوق المسؤول على جهاز العميل

هل هو صحيح؟

وإذا كانت صحيحة، هل ترى حلا آخر لتحقيق هذا الهدف أو أنه غير ممكن تماما؟

وتشك لكم مقدما.

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

المحلول

<اقتباس فقرة>   

هل هو صحيح؟

نعم، على افتراض انك تعني "هل هذا صحيح؟" لا يمكنك تثبيت شهادات على جهاز العميل بدون حقوق المشرف لأن ذلك من شأنه أن يقوض الغرض كله من مفهوم الشهادة. الشهادات غير موثوق بها لا يمكن سحرية تصبح موثوق به دون فعل واضح من قبل المستخدم.

<اقتباس فقرة>   

وأعتقد، إذا كنت تحصل على CA من أحد   المصدقة الجذر الذي   هي بالفعل في الجذر الموثوق بها   المصدقة (THAWTE، ...)   ، يجب أن يعمل؟

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

نصائح أخرى

وأنا لست 100٪ أن هذا العمل بالنسبة لك، ولكن للاختبارات وحدتنا حيث نتواصل من خلال خدمة على شبكة الانترنت ب https (ان لا يكون على آلات ديف سيرت التي يتم إصدارها من قبل CA)، ونحن قيام بذلك:

في العميل، ونحن نسمي هذا أسلوب ثابت: (ونحن نستخدم خدمات الويب مع WSE3، ولست متأكدا إذا كان هذا يتوقف على ذلك)

    private static void DisableCertificateChainCheckingForTestCertificateCompatibility()
    {
        ServicePointManager.ServerCertificateValidationCallback = 
           new RemoteCertificateValidationCallback(
              ValidateServerCertificate);
    }

    internal static bool ValidateServerCertificate(
        object sender,
        X509Certificate certificate,
        X509Chain chain,
        SslPolicyErrors sslPolicyErrors)
    {
        if (sslPolicyErrors == SslPolicyErrors.None)
        {
            return true;
        }

        //Allow untrusted machines
        if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors)
        {
            return true;
        }

        // Do not allow this client to communicate with unauthenticated servers.
        return false;
    }

وانقر نقرا مزدوجا التحقق مع MSDN I فؤاد من أنني ذات مرة اتخذ هذا الرمز مباشرة من هنا: http://msdn.microsoft.com/en- لنا / مكتبة / system.net.security.remotecertificatevalidationcallback.aspx

والتوفيق!

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