SslStream Konstruktory

Definice

Inicializuje novou instanci SslStream třídy.

Přetížení

Name Description
SslStream(Stream)

Inicializuje novou instanci SslStream třídy pomocí zadané Stream.

SslStream(Stream, Boolean)

Inicializuje novou instanci SslStream třídy pomocí zadaného Stream a stream uzavření chování.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Inicializuje novou instanci SslStream třídy pomocí zadaného Streamchování , chování uzavření datového proudu a delegát ověření certifikátu.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Inicializuje novou instanci SslStream třídy pomocí zadaného Streamchování , chování při uzavření datového proudu, delegát ověření certifikátu a delegát výběru certifikátu.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy)

Inicializuje novou instanci SslStream třídy pomocí zadané Stream.

Poznámky

Chcete-li zabránit zavření datového SslStream proudu, který zadáte, použijte SslStream konstruktor.

SslStream(Stream)

Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs

Inicializuje novou instanci SslStream třídy pomocí zadané Stream.

public:
 SslStream(System::IO::Stream ^ innerStream);
public SslStream(System.IO.Stream innerStream);
new System.Net.Security.SslStream : System.IO.Stream -> System.Net.Security.SslStream
Public Sub New (innerStream As Stream)

Parametry

innerStream
Stream

Objekt Stream používaný objektem SslStream pro odesílání a příjem dat.

Výjimky

innerStream není čitelný.

nebo

innerStream není zapisovatelný.

innerStream je null.

nebo

innerStream je rovno Null.

Poznámky

Pokud v konfiguračním souboru není zadaná hodnota pro zásadu EncryptionPolicy šifrování, EncryptionPolicy.RequireEncryption výchozí hodnota SslStream je pro instanci, která je vytvořena.

Použití šifry null je vyžadováno, pokud je zásada šifrování nastavena na EncryptionPolicy.NoEncryption.

Platí pro

SslStream(Stream, Boolean)

Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs

Inicializuje novou instanci SslStream třídy pomocí zadaného Stream a stream uzavření chování.

public:
 SslStream(System::IO::Stream ^ innerStream, bool leaveInnerStreamOpen);
public SslStream(System.IO.Stream innerStream, bool leaveInnerStreamOpen);
new System.Net.Security.SslStream : System.IO.Stream * bool -> System.Net.Security.SslStream
Public Sub New (innerStream As Stream, leaveInnerStreamOpen As Boolean)

Parametry

innerStream
Stream

Objekt Stream používaný objektem SslStream pro odesílání a příjem dat.

leaveInnerStreamOpen
Boolean

Logická hodnota, která označuje chování uzavření objektu Stream používaného SslStream pro odesílání a příjem dat. Tento parametr označuje, jestli je vnitřní datový proud otevřený.

Výjimky

innerStream není čitelný.

nebo

innerStream není zapisovatelný.

innerStream je null.

nebo

innerStream je rovno Null.

Příklady

Následující příklad kódu ukazuje volání tohoto konstruktoru.

static void ProcessClient (TcpClient client)
{
    // A client has connected. Create the
    // SslStream using the client's network stream.
    SslStream sslStream = new SslStream(
        client.GetStream(), false);
    // Authenticate the server but don't require the client to authenticate.
    try
    {
        sslStream.AuthenticateAsServer(serverCertificate, clientCertificateRequired: false, checkCertificateRevocation: true);

        // Display the properties and settings for the authenticated stream.
        DisplaySecurityLevel(sslStream);
        DisplaySecurityServices(sslStream);
        DisplayCertificateInformation(sslStream);
        DisplayStreamProperties(sslStream);

        // Set timeouts for the read and write to 5 seconds.
        sslStream.ReadTimeout = 5000;
        sslStream.WriteTimeout = 5000;
        // Read a message from the client.
        Console.WriteLine("Waiting for client message...");
        string messageData = ReadMessage(sslStream);
        Console.WriteLine("Received: {0}", messageData);

        // Write a message to the client.
        byte[] message = Encoding.UTF8.GetBytes("Hello from the server.<EOF>");
        Console.WriteLine("Sending hello message.");
        sslStream.Write(message);
    }
    catch (AuthenticationException e)
    {
        Console.WriteLine("Exception: {0}", e.Message);
        if (e.InnerException != null)
        {
            Console.WriteLine("Inner exception: {0}", e.InnerException.Message);
        }
        Console.WriteLine ("Authentication failed - closing the connection.");
        sslStream.Close();
        client.Close();
        return;
    }
    finally
    {
        // The client stream will be closed with the sslStream
        // because we specified this behavior when creating
        // the sslStream.
        sslStream.Close();
        client.Close();
    }
}
Private Shared Sub ProcessClient(client As TcpClient)
    ' A client has connected. Create the 
    ' SslStream using the client's network stream.
    Dim sslStream = New SslStream(client.GetStream(), False)

    Try

        sslStream.AuthenticateAsServer(serverCertificate, clientCertificateRequired:=False, checkCertificateRevocation:=True)
        ' Display the properties And settings for the authenticated stream.
        DisplaySecurityLevel(sslStream)
        DisplaySecurityServices(sslStream)
        DisplayCertificateInformation(sslStream)
        DisplayStreamProperties(sslStream)

        ' Set timeouts for the read and write to 5 seconds.
        sslStream.ReadTimeout = 5000
        sslStream.WriteTimeout = 5000

        ' Read a message from the client.   
        Console.WriteLine("Waiting for client message...")
        Dim messageData As String = ReadMessage(sslStream)
        Console.WriteLine("Received: {0}", messageData)

        ' Write a message to the client.
        Dim message As Byte() = Encoding.UTF8.GetBytes("Hello from the server.<EOF>")
        Console.WriteLine("Sending hello message.")
        sslStream.Write(message)
    Catch e As AuthenticationException
        Console.WriteLine("Exception: {0}", e.Message)

        If e.InnerException IsNot Nothing Then
            Console.WriteLine("Inner exception: {0}", e.InnerException.Message)
        End If

        Console.WriteLine("Authentication failed - closing the connection.")
        sslStream.Close()
        client.Close()
        Return
    Finally
        ' The client stream will be closed with the sslStream
        ' because we specified this behavior when creating
        ' the sslStream.
        sslStream.Close()
        client.Close()
    End Try
End Sub

Poznámky

Když zadáte true parametr leaveStreamOpen , zavření SslStream datového innerStream proudu nemá žádný vliv. Pokud ho už nepotřebujete, musíte explicitně zavřít innerStream .

Pokud v konfiguračním souboru není zadaná hodnota pro zásadu EncryptionPolicy šifrování, EncryptionPolicy.RequireEncryption výchozí hodnota SslStream je pro instanci, která je vytvořena.

Použití šifry null je vyžadováno, pokud je zásada šifrování nastavena na EncryptionPolicy.NoEncryption.

Platí pro

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs

Inicializuje novou instanci SslStream třídy pomocí zadaného Streamchování , chování uzavření datového proudu a delegát ověření certifikátu.

public:
 SslStream(System::IO::Stream ^ innerStream, bool leaveInnerStreamOpen, System::Net::Security::RemoteCertificateValidationCallback ^ userCertificateValidationCallback);
public SslStream(System.IO.Stream innerStream, bool leaveInnerStreamOpen, System.Net.Security.RemoteCertificateValidationCallback? userCertificateValidationCallback);
public SslStream(System.IO.Stream innerStream, bool leaveInnerStreamOpen, System.Net.Security.RemoteCertificateValidationCallback userCertificateValidationCallback);
new System.Net.Security.SslStream : System.IO.Stream * bool * System.Net.Security.RemoteCertificateValidationCallback -> System.Net.Security.SslStream
Public Sub New (innerStream As Stream, leaveInnerStreamOpen As Boolean, userCertificateValidationCallback As RemoteCertificateValidationCallback)

Parametry

innerStream
Stream

Objekt Stream používaný objektem SslStream pro odesílání a příjem dat.

leaveInnerStreamOpen
Boolean

Logická hodnota, která označuje chování uzavření objektu Stream používaného SslStream pro odesílání a příjem dat. Tento parametr označuje, jestli je vnitřní datový proud otevřený.

userCertificateValidationCallback
RemoteCertificateValidationCallback

RemoteCertificateValidationCallback Delegát zodpovědný za ověření certifikátu poskytnutého vzdálenou stranou.

Výjimky

innerStream není čitelný.

nebo

innerStream není zapisovatelný.

innerStream je null.

nebo

innerStream je rovno Null.

Příklady

Následující příklad kódu vytvoří SslStream a inicializuje část ověřování klienta.

// Create a TCP/IP client socket.
// machineName is the host running the server application.
TcpClient client = new TcpClient(machineName,5000);
Console.WriteLine("Client connected.");
// Create an SSL stream that will close the client's stream.
SslStream sslStream = new SslStream(
    client.GetStream(),
    false,
    new RemoteCertificateValidationCallback (ValidateServerCertificate),
    null
    );
// The server name must match the name on the server certificate.
try
{
    sslStream.AuthenticateAsClient(serverName);
}
catch (AuthenticationException e)
{
    Console.WriteLine("Exception: {0}", e.Message);
    if (e.InnerException != null)
    {
        Console.WriteLine("Inner exception: {0}", e.InnerException.Message);
    }
    Console.WriteLine ("Authentication failed - closing the connection.");
    client.Close();
    return;
}
' Create a TCP/IP client socket.
' machineName is the host running the server application.
Dim client = New TcpClient(machineName, 5000)
Console.WriteLine("Client connected.")

' Create an SSL stream that will close the client's stream.
Dim sslStream = New SslStream(
    client.GetStream(), False, 
    New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate), Nothing)

' The server name must match the name on the server certificate.
Try
    sslStream.AuthenticateAsClient(serverName)
Catch e As AuthenticationException
    Console.WriteLine("Exception: {0}", e.Message)

    If e.InnerException IsNot Nothing Then
        Console.WriteLine("Inner exception: {0}", e.InnerException.Message)
    End If

    Console.WriteLine("Authentication failed - closing the connection.")
    client.Close()
    Return
End Try

Poznámky

Když zadáte true parametr leaveStreamOpen , zavření SslStream datového innerStream proudu nemá žádný vliv. Pokud ho už nepotřebujete, musíte explicitně zavřít innerStream .

Argument userCertificateValidationCallback delegáta certificateErrors obsahuje kódy chyb Windows vrácené rozhraním SSPI (Security Support Provider Interface). Návratová hodnota metody vyvolaná delegátem userCertificateValidationCallback určuje, zda ověřování proběhne úspěšně.

Protokol zabezpečení a kryptografické algoritmy jsou již vybrány při userCertificateValidationCallback vyvolání metody delegáta. Metodu můžete použít k určení, zda vybrané kryptografické algoritmy a silné stránky jsou pro vaši aplikaci dostatečné. Pokud ne, měla by se metoda vrátit false , aby se zabránilo SslStream vytvoření.

Pokud v konfiguračním souboru není zadaná hodnota pro zásadu EncryptionPolicy šifrování, EncryptionPolicy.RequireEncryption výchozí hodnota SslStream je pro instanci, která je vytvořena.

Použití šifry null je vyžadováno, pokud je zásada šifrování nastavena na EncryptionPolicy.NoEncryption.

Note

.NET ukládá relace SSL do mezipaměti při jejich vytváření a pokud je to možné, pokusí se znovu použít relaci uloženou v mezipaměti. Při pokusu o opakované použití relace SSL používá framework první prvek X509Certificate2Collection poskytnutého během ověřování (pokud existuje) nebo se pokusí znovu použít anonymní relace, pokud je kolekce certifikátů prázdná.

Note

Klientské certifikáty nejsou podporovány v protokolu SSL verze 2.

Platí pro

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs

Inicializuje novou instanci SslStream třídy pomocí zadaného Streamchování , chování při uzavření datového proudu, delegát ověření certifikátu a delegát výběru certifikátu.

public:
 SslStream(System::IO::Stream ^ innerStream, bool leaveInnerStreamOpen, System::Net::Security::RemoteCertificateValidationCallback ^ userCertificateValidationCallback, System::Net::Security::LocalCertificateSelectionCallback ^ userCertificateSelectionCallback);
public SslStream(System.IO.Stream innerStream, bool leaveInnerStreamOpen, System.Net.Security.RemoteCertificateValidationCallback? userCertificateValidationCallback, System.Net.Security.LocalCertificateSelectionCallback? userCertificateSelectionCallback);
public SslStream(System.IO.Stream innerStream, bool leaveInnerStreamOpen, System.Net.Security.RemoteCertificateValidationCallback userCertificateValidationCallback, System.Net.Security.LocalCertificateSelectionCallback userCertificateSelectionCallback);
new System.Net.Security.SslStream : System.IO.Stream * bool * System.Net.Security.RemoteCertificateValidationCallback * System.Net.Security.LocalCertificateSelectionCallback -> System.Net.Security.SslStream
Public Sub New (innerStream As Stream, leaveInnerStreamOpen As Boolean, userCertificateValidationCallback As RemoteCertificateValidationCallback, userCertificateSelectionCallback As LocalCertificateSelectionCallback)

Parametry

innerStream
Stream

Objekt Stream používaný objektem SslStream pro odesílání a příjem dat.

leaveInnerStreamOpen
Boolean

Logická hodnota, která označuje chování uzavření objektu Stream používaného SslStream pro odesílání a příjem dat. Tento parametr označuje, jestli je vnitřní datový proud otevřený.

userCertificateValidationCallback
RemoteCertificateValidationCallback

RemoteCertificateValidationCallback Delegát zodpovědný za ověření certifikátu poskytnutého vzdálenou stranou.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

LocalCertificateSelectionCallback Delegát zodpovědný za výběr certifikátu použitého k ověřování.

Výjimky

innerStream není čitelný.

nebo

innerStream není zapisovatelný.

innerStream je null.

nebo

innerStream je rovno Null.

Příklady

Následující příklad kódu ukazuje volání tohoto konstruktoru. Tento příklad je součástí většího příkladu poskytnutého SslStream pro třídu.

// Server name must match the host name and the name on the host's certificate.
serverName = args[0];
// Create a TCP/IP client socket.
TcpClient client = new TcpClient(serverName,5000);
Console.WriteLine("Client connected.");
// Create an SSL stream that will close the client's stream.
SslStream sslStream = new SslStream(
    client.GetStream(),
    false,
    new RemoteCertificateValidationCallback (ValidateServerCertificate),
    new LocalCertificateSelectionCallback(SelectLocalCertificate)
    );
' Server name must match the host name and the name on the host's certificate. 
serverName = args(0)
' Create a TCP/IP client socket.
Dim client As New TcpClient(serverName, 5000)
Console.WriteLine("Client connected.")
' Create an SSL stream that will close the client's stream.
Dim sslStream As New SslStream(
    client.GetStream(), False, 
    New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate), 
    New LocalCertificateSelectionCallback(AddressOf SelectLocalCertificate))

Poznámky

Když zadáte true parametr leaveStreamOpen , zavření SslStream datového innerStream proudu nemá žádný vliv. Pokud ho už nepotřebujete, musíte explicitně zavřít innerStream .

Argument userCertificateValidationCallback delegáta certificateErrors obsahuje kódy chyb Windows vrácené rozhraním SSPI (Security Support Provider Interface). Návratová hodnota metody vyvolaná delegátem userCertificateValidationCallback určuje, zda ověřování proběhne úspěšně.

Protokol zabezpečení a kryptografické algoritmy jsou již vybrány při userCertificateValidationCallback vyvolání metody delegáta. Metodu můžete použít k určení, zda vybrané kryptografické algoritmy a silné stránky jsou pro vaši aplikaci dostatečné. Pokud ne, měla by se metoda vrátit false , aby se zabránilo SslStream vytvoření.

Delegát userCertificateSelectionCallback je užitečný, pokud má vaše aplikace více certifikátů a musí dynamicky zvolit certifikát. Certifikáty v úložišti MY se předávají metodě vyvolané delegátem.

Pokud v konfiguračním souboru není zadaná hodnota pro zásadu EncryptionPolicy šifrování, EncryptionPolicy.RequireEncryption výchozí hodnota SslStream je pro instanci, která je vytvořena.

Použití šifry null je vyžadováno, pokud je zásada šifrování nastavena na EncryptionPolicy.NoEncryption.

Note

.NET ukládá relace SSL do mezipaměti při jejich vytváření a pokud je to možné, pokusí se znovu použít relaci uloženou v mezipaměti. Při pokusu o opakované použití relace SSL používá framework první prvek X509Certificate2Collection poskytnutého během ověřování (pokud existuje) nebo se pokusí znovu použít anonymní relace, pokud je kolekce certifikátů prázdná.

Platí pro

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy)

Zdroj:
SslStream.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.IO.cs
Zdroj:
SslStream.cs
Zdroj:
SslStream.cs

Inicializuje novou instanci SslStream třídy pomocí zadané Stream.

public:
 SslStream(System::IO::Stream ^ innerStream, bool leaveInnerStreamOpen, System::Net::Security::RemoteCertificateValidationCallback ^ userCertificateValidationCallback, System::Net::Security::LocalCertificateSelectionCallback ^ userCertificateSelectionCallback, System::Net::Security::EncryptionPolicy encryptionPolicy);
public SslStream(System.IO.Stream innerStream, bool leaveInnerStreamOpen, System.Net.Security.RemoteCertificateValidationCallback? userCertificateValidationCallback, System.Net.Security.LocalCertificateSelectionCallback? userCertificateSelectionCallback, System.Net.Security.EncryptionPolicy encryptionPolicy);
public SslStream(System.IO.Stream innerStream, bool leaveInnerStreamOpen, System.Net.Security.RemoteCertificateValidationCallback userCertificateValidationCallback, System.Net.Security.LocalCertificateSelectionCallback userCertificateSelectionCallback, System.Net.Security.EncryptionPolicy encryptionPolicy);
new System.Net.Security.SslStream : System.IO.Stream * bool * System.Net.Security.RemoteCertificateValidationCallback * System.Net.Security.LocalCertificateSelectionCallback * System.Net.Security.EncryptionPolicy -> System.Net.Security.SslStream
Public Sub New (innerStream As Stream, leaveInnerStreamOpen As Boolean, userCertificateValidationCallback As RemoteCertificateValidationCallback, userCertificateSelectionCallback As LocalCertificateSelectionCallback, encryptionPolicy As EncryptionPolicy)

Parametry

innerStream
Stream

Objekt Stream používaný objektem SslStream pro odesílání a příjem dat.

leaveInnerStreamOpen
Boolean

Logická hodnota, která označuje chování uzavření objektu Stream používaného SslStream pro odesílání a příjem dat. Tento parametr označuje, jestli je vnitřní datový proud otevřený.

userCertificateValidationCallback
RemoteCertificateValidationCallback

RemoteCertificateValidationCallback Delegát zodpovědný za ověření certifikátu poskytnutého vzdálenou stranou.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

LocalCertificateSelectionCallback Delegát zodpovědný za výběr certifikátu použitého k ověřování.

encryptionPolicy
EncryptionPolicy

To EncryptionPolicy se má použít.

Výjimky

innerStream není čitelný.

nebo

innerStream není zapisovatelný.

nebo

encryptionPolicy není platný.

innerStream je null.

nebo

innerStream je rovno Null.

Poznámky

Použití šifry Null je vyžadováno, pokud encryptionPolicy je parametr nastaven na EncryptionPolicy.NoEncryption.

Platí pro