SslStream Constructeurs

Définition

Initialise une nouvelle instance de la classe SslStream.

Surcharges

Nom Description
SslStream(Stream)

Initialise une nouvelle instance de la SslStream classe à l’aide du .Stream

SslStream(Stream, Boolean)

Initialise une nouvelle instance de la SslStream classe à l’aide du comportement de fermeture de flux et spécifié Stream .

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Initialise une nouvelle instance de la SslStream classe à l’aide du comportement de fermeture de flux et du délégué de validation de certificat spécifiés Stream.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Initialise une nouvelle instance de la SslStream classe à l’aide du comportement de fermeture de flux spécifié Stream, du délégué de validation de certificat et du délégué de sélection de certificat.

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

Initialise une nouvelle instance de la SslStream classe à l’aide du .Stream

Remarques

Pour empêcher la SslStream fermeture du flux que vous fournissez, utilisez le SslStream constructeur.

SslStream(Stream)

Initialise une nouvelle instance de la SslStream classe à l’aide du .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)

Paramètres

innerStream
Stream

Objet Stream utilisé par l’envoi et la SslStream réception de données.

Exceptions

innerStream n’est pas lisible.

-ou-

innerStream n’est pas accessible en écriture.

innerStream a la valeur null.

-ou-

innerStream est égal à Null.

Remarques

Si une valeur n’est pas spécifiée dans le fichier de configuration pour encryptionpolicy, la EncryptionPolicy valeur par défaut EncryptionPolicy.RequireEncryption est celle de l’instance SslStream construite.

L’utilisation du chiffrement Null est nécessaire lorsque la stratégie de chiffrement est définie EncryptionPolicy.NoEncryptionsur .

S’applique à

SslStream(Stream, Boolean)

Initialise une nouvelle instance de la SslStream classe à l’aide du comportement de fermeture de flux et spécifié 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)

Paramètres

innerStream
Stream

Objet Stream utilisé par l’envoi et la SslStream réception de données.

leaveInnerStreamOpen
Boolean

Valeur booléenne qui indique le comportement de fermeture de l’objet Stream utilisé par l’envoi et la SslStream réception de données. Ce paramètre indique si le flux interne est laissé ouvert.

Exceptions

innerStream n’est pas lisible.

-ou-

innerStream n’est pas accessible en écriture.

innerStream a la valeur null.

-ou-

innerStream est égal à Null.

Exemples

L’exemple de code suivant illustre l’appel de ce constructeur.

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

Remarques

Lorsque vous spécifiez true pour le paramètre, la leaveStreamOpen fermeture du SslStreaminnerStream flux n’a aucun effet ; vous devez fermer innerStream explicitement lorsque vous n’en avez plus besoin.

Si une valeur n’est pas spécifiée dans le fichier de configuration pour encryptionpolicy, la EncryptionPolicy valeur par défaut EncryptionPolicy.RequireEncryption est celle de l’instance SslStream construite.

L’utilisation du chiffrement Null est nécessaire lorsque la stratégie de chiffrement est définie EncryptionPolicy.NoEncryptionsur .

S’applique à

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Initialise une nouvelle instance de la SslStream classe à l’aide du comportement de fermeture de flux et du délégué de validation de certificat spécifiés 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);
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)

Paramètres

innerStream
Stream

Objet Stream utilisé par l’envoi et la SslStream réception de données.

leaveInnerStreamOpen
Boolean

Valeur booléenne qui indique le comportement de fermeture de l’objet Stream utilisé par l’envoi et la SslStream réception de données. Ce paramètre indique si le flux interne est laissé ouvert.

userCertificateValidationCallback
RemoteCertificateValidationCallback

Délégué RemoteCertificateValidationCallback responsable de la validation du certificat fourni par le tiers distant.

Exceptions

innerStream n’est pas lisible.

-ou-

innerStream n’est pas accessible en écriture.

innerStream a la valeur null.

-ou-

innerStream est égal à Null.

Exemples

L’exemple de code suivant crée une SslStream partie cliente de l’authentification.

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

Remarques

Lorsque vous spécifiez true pour le paramètre, la leaveStreamOpen fermeture du SslStreaminnerStream flux n’a aucun effet ; vous devez fermer innerStream explicitement lorsque vous n’en avez plus besoin.

L'argument userCertificateValidationCallback délégué certificateErrors contient tous les codes d'erreur Windows retournés par l'interface du fournisseur de support de sécurité du canal (SSPI). La valeur de retour de la méthode appelée par le délégué détermine si l’authentification userCertificateValidationCallback réussit.

Le protocole de sécurité et les algorithmes de chiffrement sont déjà sélectionnés lorsque la userCertificateValidationCallback méthode du délégué est appelée. Vous pouvez utiliser la méthode pour déterminer si les algorithmes de chiffrement et les forces sélectionnés sont suffisants pour votre application. Si ce n’est pas le cas, la méthode doit revenir false pour empêcher la SslStream création.

Si une valeur n’est pas spécifiée dans le fichier de configuration pour encryptionpolicy, la EncryptionPolicy valeur par défaut EncryptionPolicy.RequireEncryption est celle de l’instance SslStream construite.

L’utilisation du chiffrement Null est nécessaire lorsque la stratégie de chiffrement est définie EncryptionPolicy.NoEncryptionsur .

Note

.NET met en cache les sessions SSL au fur et à mesure qu’elles sont créées et tente de réutiliser une session mise en cache pour les demandes suivantes, si possible. Lorsque vous tentez de réutiliser une session SSL, l’infrastructure utilise le premier élément de l’authentification X509Certificate2Collection fourni (s’il en existe un), ou tente de réutiliser une session anonyme si la collection de certificats est vide.

Note

Les certificats clients ne sont pas pris en charge dans le protocole SSL version 2.

S’applique à

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Initialise une nouvelle instance de la SslStream classe à l’aide du comportement de fermeture de flux spécifié Stream, du délégué de validation de certificat et du délégué de sélection de certificat.

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)

Paramètres

innerStream
Stream

Objet Stream utilisé par l’envoi et la SslStream réception de données.

leaveInnerStreamOpen
Boolean

Valeur booléenne qui indique le comportement de fermeture de l’objet Stream utilisé par l’envoi et la SslStream réception de données. Ce paramètre indique si le flux interne est laissé ouvert.

userCertificateValidationCallback
RemoteCertificateValidationCallback

Délégué RemoteCertificateValidationCallback responsable de la validation du certificat fourni par le tiers distant.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

Délégué LocalCertificateSelectionCallback responsable de la sélection du certificat utilisé pour l’authentification.

Exceptions

innerStream n’est pas lisible.

-ou-

innerStream n’est pas accessible en écriture.

innerStream a la valeur null.

-ou-

innerStream est égal à Null.

Exemples

L’exemple de code suivant illustre l’appel de ce constructeur. Cet exemple fait partie d’un exemple plus large fourni pour 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))

Remarques

Lorsque vous spécifiez true pour le paramètre, la leaveStreamOpen fermeture du SslStreaminnerStream flux n’a aucun effet ; vous devez fermer innerStream explicitement lorsque vous n’en avez plus besoin.

L'argument userCertificateValidationCallback délégué certificateErrors contient tous les codes d'erreur Windows retournés par l'interface du fournisseur de support de sécurité du canal (SSPI). La valeur de retour de la méthode appelée par le délégué détermine si l’authentification userCertificateValidationCallback réussit.

Le protocole de sécurité et les algorithmes de chiffrement sont déjà sélectionnés lorsque la userCertificateValidationCallback méthode du délégué est appelée. Vous pouvez utiliser la méthode pour déterminer si les algorithmes de chiffrement et les forces sélectionnés sont suffisants pour votre application. Si ce n’est pas le cas, la méthode doit revenir false pour empêcher la SslStream création.

Le userCertificateSelectionCallback délégué est utile lorsque votre application a plusieurs certificats et doit choisir dynamiquement un certificat. Les certificats du magasin « MY » sont passés à la méthode appelée par le délégué.

Si une valeur n’est pas spécifiée dans le fichier de configuration pour encryptionpolicy, la EncryptionPolicy valeur par défaut EncryptionPolicy.RequireEncryption est celle de l’instance SslStream construite.

L’utilisation du chiffrement Null est nécessaire lorsque la stratégie de chiffrement est définie EncryptionPolicy.NoEncryptionsur .

Note

.NET met en cache les sessions SSL au fur et à mesure qu’elles sont créées et tente de réutiliser une session mise en cache pour les demandes suivantes, si possible. Lorsque vous tentez de réutiliser une session SSL, l’infrastructure utilise le premier élément de l’authentification X509Certificate2Collection fourni (s’il en existe un), ou tente de réutiliser une session anonyme si la collection de certificats est vide.

S’applique à

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

Initialise une nouvelle instance de la SslStream classe à l’aide du .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);
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)

Paramètres

innerStream
Stream

Objet Stream utilisé par l’envoi et la SslStream réception de données.

leaveInnerStreamOpen
Boolean

Valeur booléenne qui indique le comportement de fermeture de l’objet Stream utilisé par l’envoi et la SslStream réception de données. Ce paramètre indique si le flux interne est laissé ouvert.

userCertificateValidationCallback
RemoteCertificateValidationCallback

Délégué RemoteCertificateValidationCallback responsable de la validation du certificat fourni par le tiers distant.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

Délégué LocalCertificateSelectionCallback responsable de la sélection du certificat utilisé pour l’authentification.

encryptionPolicy
EncryptionPolicy

EncryptionPolicy à utiliser.

Exceptions

innerStream n’est pas lisible.

-ou-

innerStream n’est pas accessible en écriture.

-ou-

encryptionPolicy n’est pas valide.

innerStream a la valeur null.

-ou-

innerStream est égal à Null.

Remarques

L’utilisation du chiffrement Null est requise lorsque le encryptionPolicy paramètre est défini sur EncryptionPolicy.NoEncryption.

S’applique à