С этим кодом, например:
private static void OnConnect(IAsyncResult ar)
{
var clientConnection = listener.EndAcceptTcpClient(ar);
listener.BeginAcceptTcpClient(OnConnect, ar.AsyncState);
try
{
// SSL the client
var clientStream = clientConnection.GetStream();
var clientSecureStream = new SslStream(clientStream, false);
clientSecureStream.AuthenticateAsServer(certificate);
...
...
Я могу успешно установить входящее соединение SSL. Клиент, который подключается к этому серверу, указывает целевой хост при аутентификации в качестве клиента: https://docs.microsoft.com/en-us/dotnet/api/system.net.security.sslstream.authenticateasclient?view=netframework-4.7.2#System_Net_Security_SslStream_AuthenticateAsClient_System_String_
Как мне получить значение этого целевого хоста в моем коде выше?
Я просмотрел параметр RemoteCertificateValidationCallback для конструктора SslStream, но Интернет говорит мне, что этот обратный вызов предназначен только для клиентской стороны, а не для серверной (я пробовал, и аргумент targetHost всегда пустая строка).
Я искал здесь и в Интернете, и у меня возникли проблемы с поиском решения...
Должен ли SslServer отправлять разные данные в зависимости от целевого хоста? SslStream просто не поддерживает этот сценарий? Я полностью упустил какую-то концепцию?