SignalR 1.1 Beta1和服务器证书

时间:2013-04-24 08:57:17

标签: signalr

我正在使用SignalR 1.1 beta。我的控制器代码如下

_signalUrl = "https://localhost/signalr";
_hubConnection = new HubConnection(_signalUrl);
_proxy = _hubConnection.CreateHubProxy("MyHub");
_hubConnection.Start().Wait(); // throws error

以下是错误详情

InnerException {“底层连接已关闭:无法为SSL / TLS安全通道建立信任关系。”} System.Exception {System.Net.WebException}

InnerException {“根据验证程序,远程证书无效。”} System.Exception {System.Security.Authentication.AuthenticationException}

堆栈跟踪    在System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)    在System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout,CancellationToken cancellationToken)    在System.Threading.Tasks.Task.Wait()。

使用证书部署到服务器时,使用域名(https://domainname.com/signalr)正常工作。但不是IP地址(https://IPAddress/signalr)。

还尝试通过以下代码添加客户端证书。

_proxy = _hubConnection.CreateHubProxy("MyHub");
X509Certificate certificate = X509Certificate.CreateFromCertFile("MyCert.cer");
_hubConnection.Start(new MyHttpClient() { Certificate = certificate }).Wait();

如何在启动集线器连接之前配置自定义客户端证书?

任何想法,提前谢谢。

普利文

1 个答案:

答案 0 :(得分:0)

将证书添加到集合中。

_hubConnection = new HubConnection(_signalUrl);
_proxy = _hubConnection.CreateHubProxy("MyHub");
_hubConnection.AddClientCertificate(X509Certificate.CreateFromCertFile("MyCert.cer"));
_hubConnection.Start().Wait();