Надежные корневые центры сертификации ClickOnce - PullRequest
1 голос
/ 29 апреля 2009

У меня еще один вопрос по поводу SSL.

У меня есть Smart Client, и я развертываю его с помощью ClickOnce. В этом приложении Smart Client я вызываю веб-службу HTTPS. Мне нужно установить доверенные корневые центры сертификации для предоставления доступа к этой веб-службе HTTPS.

Допустим, я хочу сохранить его полностью "ClickOnce", что означает, что я не хочу ничего делать на клиентском компьютере, кроме запуска ClickOnce = я не хочу устанавливать сертификат на клиентском компьютере вручную (или нет), но я хочу установить его до Smart Client. Я бы включил его в пакет и установил бы первым.

Моя проблема:

Когда я читаю в Интернете, я никак не мог установить «Доверенные корневые центры сертификации», не имея прав администратора на клиентском компьютере

это правильно?

если это правильно, вы видите другое решение для достижения этой цели или это просто невозможно?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 21 мая 2009

это правильно?

Да, предполагая, что вы имеете в виду "это правильно?" Вы не можете устанавливать сертификаты на клиентском компьютере без прав администратора, потому что это подорвало бы всю цель концепции сертификата. Ненадежные сертификаты не могут волшебным образом стать доверенными без явных действий со стороны пользователя.

Полагаю, если я получу CA от одного из Корневые центры сертификации, которые уже в доверенном корне Центры сертификации (Thawte, ...) должно работать?

Я предполагаю, что под "CA" вы на самом деле имеете в виду "сертификат". CA обозначает Центр сертификации. Thawte, Verisign и т. Д. Являются центрами сертификации. Вы получаете сертификаты в центрах сертификации. И ответ - да, это сработает, потому что (вы это сказали) им уже доверяют практически все в мире.

0 голосов
/ 14 июня 2009

Я не на 100% уверен, что это будет работать для вас, но для наших модульных тестов, где мы общаемся через наш веб-сервис с https (что на машинах разработчиков нет сертификата, выданного ЦС), сделать это:

В клиенте мы вызываем этот статический метод: (мы используем веб-сервисы с 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 Я обнаружил, что когда-то давно взял этот код прямо отсюда: http://msdn.microsoft.com/en-us/library/system.net.security.remotecertificatevalidationcallback.aspx

Godspeed!

...