SslStream Costruttori

Definizione

Inizializza una nuova istanza della classe SslStream.

Overload

Nome Descrizione
SslStream(Stream)

Inizializza una nuova istanza della SslStream classe utilizzando l'oggetto specificato Stream.

SslStream(Stream, Boolean)

Inizializza una nuova istanza della SslStream classe utilizzando il comportamento di chiusura del flusso e specificato Stream .

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Inizializza una nuova istanza della SslStream classe utilizzando il comportamento di chiusura del flusso e il delegato di convalida del certificato specificati Stream.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Inizializza una nuova istanza della SslStream classe utilizzando il comportamento di chiusura del flusso, il delegato di convalida del certificato e il delegato di selezione del certificato specificati Stream.

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

Inizializza una nuova istanza della SslStream classe utilizzando l'oggetto specificato Stream.

Commenti

Per impedire la chiusura del SslStream flusso fornito, usare il SslStream costruttore .

SslStream(Stream)

Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs

Inizializza una nuova istanza della SslStream classe utilizzando l'oggetto specificato 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)

Parametri

innerStream
Stream

Oggetto Stream utilizzato dall'oggetto per l'invio SslStream e la ricezione di dati.

Eccezioni

innerStream non è leggibile.

oppure

innerStream non è scrivibile.

innerStream è null.

oppure

innerStream è uguale a Null.

Commenti

Se un valore non viene specificato nel file di configurazione per encryptionpolicy, il EncryptionPolicy valore predefinito EncryptionPolicy.RequireEncryption è per l'istanza SslStream costruita.

L'uso della crittografia Null è necessario quando i criteri di crittografia sono impostati su EncryptionPolicy.NoEncryption.

Si applica a

SslStream(Stream, Boolean)

Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs

Inizializza una nuova istanza della SslStream classe utilizzando il comportamento di chiusura del flusso e specificato Stream .

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)

Parametri

innerStream
Stream

Oggetto Stream utilizzato dall'oggetto per l'invio SslStream e la ricezione di dati.

leaveInnerStreamOpen
Boolean

Valore booleano che indica il comportamento di chiusura dell'oggetto utilizzato dall'oggetto per l'invio Stream e la SslStream ricezione di dati. Questo parametro indica se il flusso interno viene lasciato aperto.

Eccezioni

innerStream non è leggibile.

oppure

innerStream non è scrivibile.

innerStream è null.

oppure

innerStream è uguale a Null.

Esempio

Nell'esempio di codice seguente viene illustrata la chiamata a questo costruttore.

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

Commenti

Quando si specifica true per il leaveStreamOpen parametro , la chiusura di SslStream non ha alcun effetto sul innerStream flusso; è necessario chiudere innerStream in modo esplicito quando non è più necessaria.

Se un valore non viene specificato nel file di configurazione per encryptionpolicy, il EncryptionPolicy valore predefinito EncryptionPolicy.RequireEncryption è per l'istanza SslStream costruita.

L'uso della crittografia Null è necessario quando i criteri di crittografia sono impostati su EncryptionPolicy.NoEncryption.

Si applica a

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs

Inizializza una nuova istanza della SslStream classe utilizzando il comportamento di chiusura del flusso e il delegato di convalida del certificato specificati Stream.

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)

Parametri

innerStream
Stream

Oggetto Stream utilizzato dall'oggetto per l'invio SslStream e la ricezione di dati.

leaveInnerStreamOpen
Boolean

Valore booleano che indica il comportamento di chiusura dell'oggetto utilizzato dall'oggetto per l'invio Stream e la SslStream ricezione di dati. Questo parametro indica se il flusso interno viene lasciato aperto.

userCertificateValidationCallback
RemoteCertificateValidationCallback

Delegato RemoteCertificateValidationCallback responsabile della convalida del certificato fornito dall'entità remota.

Eccezioni

innerStream non è leggibile.

oppure

innerStream non è scrivibile.

innerStream è null.

oppure

innerStream è uguale a Null.

Esempio

L'esempio di codice seguente crea un oggetto SslStream e avvia la parte client dell'autenticazione.

// 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

Commenti

Quando si specifica true per il leaveStreamOpen parametro , la chiusura di SslStream non ha alcun effetto sul innerStream flusso; è necessario chiudere innerStream in modo esplicito quando non è più necessaria.

L'argomento userCertificateValidationCallback delegato certificateErrors contiene eventuali codici di errore Windows restituiti dal canale Security Support Provider Interface (SSPI). Il valore restituito del metodo richiamato dal userCertificateValidationCallback delegato determina se l'autenticazione ha esito positivo.

Il protocollo di sicurezza e gli algoritmi di crittografia sono già selezionati quando viene richiamato il userCertificateValidationCallback metodo del delegato. È possibile usare il metodo per determinare se gli algoritmi di crittografia e i punti di forza selezionati sono sufficienti per l'applicazione. In caso contrario, il metodo deve tornare false per impedire la creazione dell'oggetto SslStream .

Se un valore non viene specificato nel file di configurazione per encryptionpolicy, il EncryptionPolicy valore predefinito EncryptionPolicy.RequireEncryption è per l'istanza SslStream costruita.

L'uso della crittografia Null è necessario quando i criteri di crittografia sono impostati su EncryptionPolicy.NoEncryption.

Note

.NET memorizza nella cache le sessioni SSL man mano che vengono create e tenta di riutilizzare una sessione memorizzata nella cache per le richieste successive, se possibile. Quando si tenta di riutilizzare una sessione SSL, framework usa il primo elemento dell'oggetto fornito durante l'autenticazione X509Certificate2Collection (se presente) o tenta di riutilizzare una sessione anonima se la raccolta di certificati è vuota.

Note

I certificati client non sono supportati nel protocollo SSL versione 2.

Si applica a

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.cs

Inizializza una nuova istanza della SslStream classe utilizzando il comportamento di chiusura del flusso, il delegato di convalida del certificato e il delegato di selezione del certificato specificati Stream.

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)

Parametri

innerStream
Stream

Oggetto Stream utilizzato dall'oggetto per l'invio SslStream e la ricezione di dati.

leaveInnerStreamOpen
Boolean

Valore booleano che indica il comportamento di chiusura dell'oggetto utilizzato dall'oggetto per l'invio Stream e la SslStream ricezione di dati. Questo parametro indica se il flusso interno viene lasciato aperto.

userCertificateValidationCallback
RemoteCertificateValidationCallback

Delegato RemoteCertificateValidationCallback responsabile della convalida del certificato fornito dall'entità remota.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

Delegato LocalCertificateSelectionCallback responsabile della selezione del certificato usato per l'autenticazione.

Eccezioni

innerStream non è leggibile.

oppure

innerStream non è scrivibile.

innerStream è null.

oppure

innerStream è uguale a Null.

Esempio

Nell'esempio di codice seguente viene illustrata la chiamata a questo costruttore. Questo esempio fa parte di un esempio più ampio fornito per la SslStream classe .

// 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))

Commenti

Quando si specifica true per il leaveStreamOpen parametro , la chiusura di SslStream non ha alcun effetto sul innerStream flusso; è necessario chiudere innerStream in modo esplicito quando non è più necessaria.

L'argomento userCertificateValidationCallback delegato certificateErrors contiene eventuali codici di errore Windows restituiti dal canale Security Support Provider Interface (SSPI). Il valore restituito del metodo richiamato dal userCertificateValidationCallback delegato determina se l'autenticazione ha esito positivo.

Il protocollo di sicurezza e gli algoritmi di crittografia sono già selezionati quando viene richiamato il userCertificateValidationCallback metodo del delegato. È possibile usare il metodo per determinare se gli algoritmi di crittografia e i punti di forza selezionati sono sufficienti per l'applicazione. In caso contrario, il metodo deve tornare false per impedire la creazione dell'oggetto SslStream .

Il delegato è utile quando l'applicazione userCertificateSelectionCallback dispone di più certificati e deve scegliere in modo dinamico un certificato. I certificati nell'archivio "MY" vengono passati al metodo richiamato dal delegato.

Se un valore non viene specificato nel file di configurazione per encryptionpolicy, il EncryptionPolicy valore predefinito EncryptionPolicy.RequireEncryption è per l'istanza SslStream costruita.

L'uso della crittografia Null è necessario quando i criteri di crittografia sono impostati su EncryptionPolicy.NoEncryption.

Note

.NET memorizza nella cache le sessioni SSL man mano che vengono create e tenta di riutilizzare una sessione memorizzata nella cache per le richieste successive, se possibile. Quando si tenta di riutilizzare una sessione SSL, framework usa il primo elemento dell'oggetto fornito durante l'autenticazione X509Certificate2Collection (se presente) o tenta di riutilizzare una sessione anonima se la raccolta di certificati è vuota.

Si applica a

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

Origine:
SslStream.cs
Origine:
SslStream.cs
Origine:
SslStream.IO.cs
Origine:
SslStream.cs
Origine:
SslStream.cs

Inizializza una nuova istanza della SslStream classe utilizzando l'oggetto specificato 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)

Parametri

innerStream
Stream

Oggetto Stream utilizzato dall'oggetto per l'invio SslStream e la ricezione di dati.

leaveInnerStreamOpen
Boolean

Valore booleano che indica il comportamento di chiusura dell'oggetto utilizzato dall'oggetto per l'invio Stream e la SslStream ricezione di dati. Questo parametro indica se il flusso interno viene lasciato aperto.

userCertificateValidationCallback
RemoteCertificateValidationCallback

Delegato RemoteCertificateValidationCallback responsabile della convalida del certificato fornito dall'entità remota.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

Delegato LocalCertificateSelectionCallback responsabile della selezione del certificato usato per l'autenticazione.

encryptionPolicy
EncryptionPolicy

Oggetto EncryptionPolicy da utilizzare.

Eccezioni

innerStream non è leggibile.

oppure

innerStream non è scrivibile.

oppure

encryptionPolicy non è valido.

innerStream è null.

oppure

innerStream è uguale a Null.

Commenti

L'uso della crittografia Null è obbligatorio quando il encryptionPolicy parametro è impostato su EncryptionPolicy.NoEncryption.

Si applica a