Я пытаюсь отправить и проверить SSL-сертификат между клиентом и сервером с помощью WebSocketSharp
Серверная сторона
wss = new WebSocketServer(IPAddress.Parse("127.0.0.1"), 6070, true);
string _certificatePath = Path.GetDirectoryName(typeof(WSS_Server).Assembly.Location) + "\\cert\\public_privatekey.pfx";
wss.SslConfiguration.ServerCertificate = new X509Certificate2(_certificatePath, "mypass");
wss.SslConfiguration.ClientCertificateRequired = false; // true;
wss.SslConfiguration.CheckCertificateRevocation = false; // true;
wss.SslConfiguration.ClientCertificateValidationCallback = RemoteCertificateValidationCallback;
wss.AddWebSocketService<MyRemoteService>(
"/myservice",
() => new MyRemoteService()
{
OriginValidator = val =>
{
// Check the value of the Origin header, and return true if valid.
return true;
},
CookiesValidator = (req, res) =>
{
return true; // If valid.
}
});
Клиентская сторона
var ws = new WebSocket("wss://127.0.0.1:6070/myservice/");
string _certificatePath = "\\cert\\public_privatekey.pfx";
X509Certificate2 x509 = new X509Certificate2(_certificatePath, "mypass");
X509CertificateCollection xcol = new X509CertificateCollection();
xcol.Add(x509);
ws.SslConfiguration = new WebSocketSharp.Net.ClientSslConfiguration("127.0.0.1", xcol, System.Security.Authentication.SslProtocols.Default, false);
//ws.SslConfiguration.ClientCertificates = new X509CertificateCollection();
//ws.SslConfiguration.ClientCertificates.Add(x509);
ws.OnOpen += Ws_OnOpen;
ws.OnMessage += Ws_OnMessage;
ws.OnError += Ws_OnError;
ws.OnClose += Ws_OnClose;
ws.Connect();
На стороне сервера RemoteCertificateValidationCallback сертификат и цепочка всегда ноль
Как будто клиент никогда не отправляет сертификат.
Есть идеи как решить?