2009-04-29 2 views
1

나는 SSL에 관해 다른 질문을 가지고 있습니다.ClickOnce 신뢰할 수있는 루트 인증 기관

나는 Smart Client가 있으며 ClickOnce를 사용하여 배포합니다. 이 스마트 클라이언트 응용 프로그램에서 HTTPS 웹 서비스를 호출합니다. 이 HTTPS 웹 서비스에 대한 액세스 권한을 부여하기 위해 신뢰할 수있는 루트 인증 기관을 설치해야합니다.

"ClickOnce"를 완전하게 유지하려고합니다. 즉, 클라이언트에서 인증서를 설치하지 않으려는 경우를 제외하고는 클라이언트 컴퓨터에서 수행 할 작업이 없기를 원합니다. 컴퓨터를 수동으로 설치 (또는 설치하지 않음)하지만 Smart Client 이전에 설치하고 싶습니다. 나는 그것을 패키지에 포함 시켰을 것이고 설치 될 첫 번째 것이 될 것이다.

내 문제는 다음과 같습니다

내가 인터넷에서 읽을 때, 나는 그것이 맞다 클라이언트 컴퓨터

에 관리자 권한을 필요없이 "신뢰할 수있는 루트 인증 기관"를 설치할 수있는 방법이 없다?

맞으면이 목표를 달성하기위한 또 다른 해결책이 보이나요 아니면 불가능한 것입니까?

Thx 있습니다.

+0

신뢰할 수있는 루트 인증 기관 (Thawte, ...)에 이미있는 루트 인증 기관 중 하나에서 CA를 가져온다면 작동할까요? – GillouX

+0

일반적인 비 개발 컴퓨터의 신뢰할 수있는 인증서에는 중급 코드 서명 인증서가 없으므로 Thawte를 권장하지 않습니다. 따라서 사용자는 clickonce에 서명 할 수 있으므로 사용자는 앱을 실행할 때 경고 메시지를 받게됩니다. 그래도. 희망이 도움이됩니다. –

답변

1

맞습니까?

예, "맞습니까?" 관리자 권한없이 클라이언트 시스템에 인증서를 설치할 수 없으므로 인증서 개념의 모든 목적을 저해 할 수 있습니다. 신뢰할 수없는 인증서는 사용자의 명시적인 조치 없이는 마술처럼 신뢰할 수 없습니다.

내가 가 신뢰할 수있는 루트 인증 기관에 이미있는 루트 인증 기관 중 하나에서 CA를 받으면 내가 추측 (Thawte에, ...) , 그것을 작동합니다?

"CA"라고 가정 할 때 실제로 "인증서"를 의미합니다. CA는 인증 기관을 의미합니다. Thawte, Verisign 등은 인증 기관입니다. 인증 기관에서 인증서를 얻습니다. 그리고 대답은 '예'입니다. 왜냐하면 그들은 (사실 당신이 말했기 때문에) 그들은 이미 세계의 거의 모든 사람들이 신뢰하고 있기 때문입니다.

0

나는 이것이 당신에게 효과적 일 수는 없지만, 우리가 웹 서비스를 통해 https로 통신하는 단위 테스트 (dev 컴퓨터에는 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과 나는 foud 나는이 코드를 한 번에 여기에서 바로 가져왔다. http://msdn.microsoft.com/en-us/library/system.net.security.remotecertificatevalidationcallback.aspx

Godspeed!

관련 문제