Tôi muốn tạo một ứng dụng SignalR đơn giản. Sử dụng http mọi thứ hoạt động tốt, nhưng khi tôi cố gắng sử dụng https và chứng chỉ thì ứng dụng không hoạt động.SignalR with Certificates
Hiện tại, điều duy nhất tôi muốn làm là lấy Chứng chỉ của Máy khách trong máy chủ.
server (Authentication Handler):
public class ClientCertificateAuthenticationHandler : AuthenticationHandler<ClientCertificateAuthenticationOptions>
{
protected override Task<AuthenticationTicket> AuthenticateCoreAsync()
{
var cert = Context.Get<X509Certificate>("ssl.ClientCertificate");
if (cert == null)
{
return Task.FromResult<AuthenticationTicket>(null);
}
try
{
Options.Validator.Validate(cert);
}
catch
{
return Task.FromResult<AuthenticationTicket>(null);
}
return null;
}
}
Khách hàng (Hub)
var connection = new HubConnection("https://localhost:8080/");
connection.AddClientCertificate(X509Certificate.CreateFromCertFile("c1.cer"));
IHubProxy myHub = connection.CreateHubProxy("MyHub");
connection.Start().Wait();
Việc làm này, trong máy chủ khi tôi làm var cert = Context.Get<X509Certificate>("ssl.ClientCertificate");
tôi nhận được null
.
Vì vậy, những gì tôi đang làm sai?
Cảm ơn bạn đã trả lời. Tôi đặt các cấu hình trong App.config của tôi, nhưng kết quả là như nhau. –
i đã sửa mục nhập ssl => SslNegotiateCert – pm100
Tôi đã thử điều đó. Nhưng vẫn không hoạt động. Có thể là một cái gì đó trong phần còn lại của mã, nhưng tôi không thể tìm ra những gì. –