С этим кодом, например:
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 просто не поддерживает этот сценарий? Я что-то упускаю из виду?