ClickOnce信頼されたルート証明機関
-
03-07-2019 - |
質問
SSLに関する別の質問があります。
スマートクライアントがあり、ClickOnceを使用して展開します。このスマートクライアントアプリケーションでは、HTTPS Webサービスを呼び出します。このHTTPS Webサービスへのアクセスを許可するには、信頼されたルート証明機関をインストールする必要があります。
「ClickOnce」を完全に維持したい、つまり、ClickOnceを実行する以外はクライアントマシンで何もしたくない=クライアントに証明書をインストールする必要がない手動で(またはそうではない)マシンをインストールしますが、Smart Clientの前にインストールする必要があります。パッケージに含めると、最初にインストールされます。
私の問題は:
インターネットで読むと、「信頼されたルート証明機関」をインストールする方法がありません。クライアントマシンの管理者権限を持たない
正しいですか?
それが正しい場合、この目標を達成するための別の解決策がありますか、それとも不可能ですか?
事前にお願いします。
解決
正しいですか?
はい、「それは正しいですか?」管理者権限がないとクライアントマシンに証明書をインストールできません。これは、証明書の概念の全体的な目的を損なうためです。信頼できない証明書は、ユーザーの明示的な操作なしに魔法のように信頼されることはありません。
私は、私が ルート証明機関 すでに信頼されたルートにある 認証局(Thawte、...) 、それは動作するはずですか?
「CA」によって仮定しています;実際には「証明書」を意味します。 CAは認証局の略です。 Thawte、Verisignなどは認証局です。認証局から証明書を取得します。答えは「はい」です。(あなたが言ったように)彼らはすでに世界中のほぼ全員から信頼されているからです。
他のヒント
これがあなたのために働くというのは100%ではありませんが、https(開発マシンではCAによって発行された証明書がない)を使用してWebサービスを介して通信するユニットテストでは、これを行います:
クライアントでは、次の静的メソッドを呼び出します。 (私たちは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での二重チェック私は、むかしむかし、このコードをここからまっすぐに取ったことを知っています。 http://msdn.microsoft.com/en- us / library / system.net.security.remotecertificatevalidationcallback.aspx
Godspeed!