Hyppoprogramm
@Hyppoprogramm

Почему появляется ошибка при аутентификации HTTPS?

Здравствуйте!
У меня есть самописный HTTPS сервер на C#, и при подключении к нему я получаю следующую ошибку:
System.ComponentModel.Win32Exception: "В пакете безопасности отсутствуют учетные данные"

Это код запуска сервера:
certificate = X509Certificate2.CreateFromPemFile("www/certificate/fullchain.pem", "www/certificate/privkey.pem");
 
server = new TcpListener(IPAddress.Parse("192.168.1.200"), 40000);
server.Start();
while (true)
{
     new Thread(new ParameterizedThreadStart(ServeClient)).Start(server.AcceptTcpClient());
}

А это код для обслуживания клиента:
SslStream stream = new SslStream(client.GetStream(), false);
stream.AuthenticateAsServer(certificate, false, true); // тут получаю ошибку
 
string HTTPREQUEST = ReadMessage(stream, client);
 
var match = Regex.Match(HTTPREQUEST, "^([^ ]+) ([^ ]+)");
 
string METHOD = match.Groups[1].Value;
string PATH = match.Groups[2].Value;
 
Console.WriteLine("METHOD=" + METHOD + "; PATH=" + PATH + "\n" + HTTPREQUEST + "\n");

SSL сертификат правильный, я проверял. Пробовал запускать от имени администратора. Ничего не работает.
Помогите, пожалуйста!
Заранее спасибо.
  • Вопрос задан
  • 1043 просмотра
Решения вопроса 1
Hyppoprogramm
@Hyppoprogramm Автор вопроса
Проблема оказалась в самом C#.
Надо было заменить
certificate = X509Certificate2.CreateFromPemFile("www/certificate/fullchain.pem", "www/certificate/privkey.pem");

на
certificate = new X509Certificate2(X509Certificate2.CreateFromPemFile("www/certificate/fullchain.pem", "www/certificate/privkey.pem").Export("X509ContentType.Pkcs12"));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
Проверьте https://www.ssllabs.com/ssltest/index.html или другим валидатором.
Один из вариантов - у вас (на машине клиента) нет соответствующего CA cert.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы