2009-04-29 20 views
1

私は、SSLに関する別の質問があります。ClickOnce信頼されたルート証明機関

私はSmart Clientを所有しており、ClickOnceを使用して展開しています。このSmart Clientアプリケーションでは、HTTPS Webサービスを呼び出します。このHTTPS Webサービスへのアクセスを許可するTrusted Root Certification Authoritiesをインストールする必要があります。

私はそれを完全に "ClickOnce"にしておきたいとしましょう。つまり、クライアントマシンで何もしたくないということです。ただし、ClickOnceを実行する以外は、クライアントに証明書をインストールする必要はありません。マシンを手動で(またはそうではありませんが)スマートクライアントの前にインストールしたいと思っています。私はそれをパッケージに入れて、最初にインストールすることになります。

私の問題は、次のとおりです。

私は、インターネット上で読んで、私はそれが正しいとクライアントマシン

上で管理者権限を持つことなく、「信頼されたルート証明機関」をインストールすることができます方法はありませんか?

これが正しい場合は、この目標を達成するための別の解決方法がありますか、それとも不可能なのでしょうか?

Thxあなたの前に。

+0

信頼ルート認証局(Thawte、...)に既に存在するルート証明機関のいずれかからCAを取得した場合、正常に動作するはずですか? – GillouX

+0

通常の非開発マシンの信頼できる証明書に中間コード署名証明書が見つからないため、Thawteには推奨されません。したがって、あなたはclickonceに署名することができます。しかし、。お役に立てれば。 –

答えて

1

それは正しいですか?

はい、「正しいのですか?管理者権限を持たないクライアントマシンに証明書をインストールすることはできません。これは、証明書の概念全体の目的を損なうためです。信頼できない証明書は、ユーザーからの明示的な操作なしに魔法のように信頼できるものにはなりません。

私は が信頼されたルートにすでに 証明機関(Thawte社、...) ある されたルート証明機関のいずれかからCAを取得した場合、それが動作するはず、と思いますか?

「CA」とは、実際には「証明書」を意味します。 CAは認証局を表します。 Thawte、Verisignなどは認証局です。認証局から証明書を取得します。答えは「はい」です。これは、(あなたが言った)彼らはすでに世界のほとんどの人が信頼しているからです。

0

これはあなたにとってはうまくいくわけではありませんが、私たちがhttpsでWebサービスを介して通信する単体テスト(開発者マシンではCAから発行された証明書はありません)私たちは、この操作を行います。クライアントでは

を、私たちはこの静的メソッドを呼び出す: (私たちはWSE3とWebサービスを使用しているが、わからないが、これはそれに依存している場合)

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!

関連する問題