Просто нужно проверить, включен ли сервер WSS через клиент WSS, используя .Net System.Net.WebSockets с сертификатом?
Почему всегда появляется ошибка Не удается найти запрошенный объект? См. Детали трассировки в коде моего комментария.
Мне нужно реализовать клиент WSS и проверить доступность сервера WSS с помощью сертификатов.
Но как попытаться создать объект X509Certificate2
, появляется ошибка:
Не могу найти запрошенный объект
bool IsWssConnAlive(string WssUrl)
{
bool flg = false;
try
{
//string _certificateKeyStorePath = @"E:\bk\WSS\gateway\test\keystoreserver.der";
string _certificateKeyStorePath = @"E:\bk\WSS\gateway\test\keystoreserver.p12";
X509Certificate2 x509_1 = new X509Certificate2(_certificateKeyStorePath, "test@123");
/*
* Above X509Certificate2 statement aways giving error : "Cannot find the requested object.\r\n"}
* I tried .der, p21, .jks getting same error
* stack trace details :->
* at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
at System.Security.Cryptography.X509Certificates.X509Utils._QueryCertFileType(String fileName)
at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(String fileName, Object password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password)
at Test_WssConnectivity.Program.IsWssConnAlive(String WssUrl, Int32 CheckTimeInSec) in E:\Development\SolutionForTestProject\Test_WssConnectivity\Program.cs:line 142
*/
ClientWebSocket websocket = new ClientWebSocket();
websocket.Options.ClientCertificates.Add(x509_1);
X509CertificateCollection xcol = new X509CertificateCollection();
xcol.Add(x509_1);
websocket.Options.ClientCertificates = xcol;
//connect to URL
websocket.ConnectAsync(new Uri(WssUrl), CancellationToken.None);
//Now checking actaul status
if (websocket.State == WebSocketState.Open)
{
flg = true;
}
else if (websocket.State == WebSocketState.Closed)
{
flg = false;
}
}
catch (Exception ex)
{
flg = false;
}
return flg;
}