С помощью следующего кода я могу установить соединение SSL:
$cert = dir cert:\CurrentUser\My | where {$_.Subject -like "*Alice*"}
$computerName = "google.com"
$port = "443"
$socket = New-Object Net.Sockets.TcpClient($computerName, $port)
$stream = $socket.GetStream()
$sslStream = New-Object System.Net.Security.SslStream $stream,$false
$sslStream.AuthenticateAsClient($computerName)
$sslStream
Это работает нормально.Но теперь я не хочу добавлять сертификат клиента для аутентификации.Думаю, мне просто нужно заменить
$sslStream.AuthenticateAsClient($computerName)
на
$sslStream.BeginAuthenticateAsClient($computerName,$cert,"SslProtocols",$false,"Foo" ,"Bar")
Но мне не повезло правильно понять Аргументы.Может ли Sombody решить Assync Calls, пожалуйста ;-) Может быть, мне нужен какой-нибудь код C # для этого?!?
Аргументы:
System.IAsyncResult BeginAuthenticateAsClient(
string targetHost,
System.Security.Cryptography.X509Certificates.X509CertificateCollection clientCertificates,
System.Security.Authentication.SslProtocols enabledSslProtocols,
bool checkCertificateRevocation,
System.AsyncCallback asyncCallback,
System.Object asyncState)
Чего я, наконец, хочу достичь, это перечислить и позжеукажите CipherSuites, к которым подключен клиент.(Я мог бы использовать Wireshark, я знаю ;-))