Partage via


SslStream Constructeurs

Définition

Initialise une nouvelle instance de la classe SslStream.

Surcharges

SslStream(Stream)

Initialise une nouvelle instance de la classe SslStream à l'aide du Stream spécifié.

SslStream(Stream, Boolean)

Initialise une nouvelle instance de la classe SslStream en utilisant le Stream et le comportement de clôture de flux spécifiés.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Initialise une nouvelle instance de la classe SslStream en utilisant Stream, le comportement de clôture de flux et le délégué de validation de certificat spécifiés.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Initialise une nouvelle instance de la classe SslStream en utilisant Stream, le comportement de clôture de flux, le délégué de validation de certificat et le délégué de sélection de certificat spécifiés.

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

Initialise une nouvelle instance de la classe SslStream à l'aide du Stream spécifié.

Remarques

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

SslStream(Stream)

Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs

Initialise une nouvelle instance de la classe SslStream à l'aide du Stream spécifié.

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 SslStream pour envoyer et recevoir des données.

Exceptions

innerStream n’est pas accessible en lecture.

- ou -

innerStream n’est pas accessible en écriture.

innerStream a la valeur null.

- ou -

innerStream est égal à Null.

Remarques

Si aucune valeur n’est spécifiée dans le fichier de configuration pour encryptionpolicy, la EncryptionPolicy valeur par défaut EncryptionPolicy.RequireEncryption est pour le SslStream instance qui est construit.

L’utilisation du chiffrement Null est requise lorsque la stratégie de chiffrement est définie sur EncryptionPolicy.NoEncryption.

S’applique à

SslStream(Stream, Boolean)

Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs

Initialise une nouvelle instance de la classe SslStream en utilisant le Stream et le comportement de clôture de flux spécifiés.

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 SslStream pour envoyer et recevoir des données.

leaveInnerStreamOpen
Boolean

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

Exceptions

innerStream n’est pas accessible en lecture.

- 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 = gcnew SslStream( client->GetStream(),false );
   
   // Authenticate the server but don't require the client to authenticate.
   try
   {
      sslStream->AuthenticateAsServer( serverCertificate, false, true );
      // false == no client cert required; true == check cert revocation.
      
      // 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( L"Waiting for client message..." );
      String^ messageData = ReadMessage( sslStream );
      Console::WriteLine( L"Received: {0}", messageData );
      
      // Write a message to the client.
      array<Byte>^message = Encoding::UTF8->GetBytes( L"Hello from the server.<EOF>" );
      Console::WriteLine( L"Sending hello message." );
      sslStream->Write( message );
   }
   catch ( AuthenticationException^ e ) 
   {
      Console::WriteLine( L"Exception: {0}", e->Message );
      if ( e->InnerException != nullptr )
      {
         Console::WriteLine( L"Inner exception: {0}", e->InnerException->Message );
      }
      Console::WriteLine( L"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();
   }

}
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 SslStream n’a aucun effet sur le innerStream flux ; vous devez fermer innerStream explicitement lorsque vous n’en avez plus besoin.

Si aucune valeur n’est spécifiée dans le fichier de configuration pour encryptionpolicy, la EncryptionPolicy valeur par défaut EncryptionPolicy.RequireEncryption est pour le SslStream instance qui est construit.

L’utilisation du chiffrement Null est requise lorsque la stratégie de chiffrement est définie sur EncryptionPolicy.NoEncryption.

S’applique à

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs

Initialise une nouvelle instance de la classe SslStream en utilisant Stream, le comportement de clôture de flux et le délégué de validation de certificat spécifiés.

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)

Paramètres

innerStream
Stream

Objet Stream utilisé par SslStream pour envoyer et recevoir des données.

leaveInnerStreamOpen
Boolean

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

userCertificateValidationCallback
RemoteCertificateValidationCallback

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

Exceptions

innerStream n’est pas accessible en lecture.

- 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 un SslStream et lance la partie client de l’authentification.

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

    Console::WriteLine("Authentication failed - "
        "closing the connection.");
    sslStream->Close();
    client->Close();
    return;
}
// 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 SslStream n’a aucun effet sur le innerStream flux ; vous devez fermer innerStream explicitement lorsque vous n’en avez plus besoin.

L’argument userCertificateValidationCallback du certificateErrors délégué contient tous les codes d’erreur Windows retournés par l’interface SSPI (Security Support Provider Interface) du canal. 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 de .

Si aucune valeur n’est spécifiée dans le fichier de configuration pour encryptionpolicy, la EncryptionPolicy valeur par défaut EncryptionPolicy.RequireEncryption est pour le SslStream instance qui est construit.

L’utilisation du chiffrement Null est requise lorsque la stratégie de chiffrement est définie sur EncryptionPolicy.NoEncryption.

Notes

.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 requêtes suivantes, si possible. Lors de la tentative de réutilisation d’une session SSL, l’infrastructure utilise le premier élément du fourni lors de l’authentification X509Certificate2Collection (le cas échéant) ou tente de réutiliser une session anonyme si la collection de certificats est vide.

Notes

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

S’applique à

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs

Initialise une nouvelle instance de la classe SslStream en utilisant Stream, le comportement de clôture de flux, le délégué de validation de certificat et le délégué de sélection de certificat spécifiés.

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)

Paramètres

innerStream
Stream

Objet Stream utilisé par SslStream pour envoyer et recevoir des données.

leaveInnerStreamOpen
Boolean

Valeur booléenne qui indique le comportement de fermeture de l'objet Stream utilisé par SslStream pour l'envoi et la réception de données. Ce paramètre indique si le flux interne est resté 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 accessible en lecture.

- 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 grand fourni pour la SslStream classe .

// Server name must match the host name and the name on the host's certificate. 
serverName = args[ 1 ];

// Create a TCP/IP client socket.
TcpClient^ client = gcnew TcpClient( serverName,5000 );
Console::WriteLine( L"Client connected." );

// Create an SSL stream that will close the client's stream.
SslStream^ sslStream = gcnew SslStream( 
    client->GetStream(),
    false,
    gcnew RemoteCertificateValidationCallback( ValidateServerCertificate ),
    gcnew 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.
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 SslStream n’a aucun effet sur le innerStream flux ; vous devez fermer innerStream explicitement lorsque vous n’en avez plus besoin.

L’argument userCertificateValidationCallback du certificateErrors délégué contient tous les codes d’erreur Windows retournés par l’interface SSPI (Security Support Provider Interface) du canal. 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 de .

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

Si aucune valeur n’est spécifiée dans le fichier de configuration pour encryptionpolicy, la EncryptionPolicy valeur par défaut EncryptionPolicy.RequireEncryption est pour le SslStream instance qui est construit.

L’utilisation du chiffrement Null est requise lorsque la stratégie de chiffrement est définie sur EncryptionPolicy.NoEncryption.

Notes

.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 requêtes suivantes, si possible. Lors de la tentative de réutilisation d’une session SSL, l’infrastructure utilise le premier élément du fourni lors de l’authentification X509Certificate2Collection (le cas échéant) ou tente de réutiliser une session anonyme si la collection de certificats est vide.

S’applique à

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

Source:
SslStream.IO.cs
Source:
SslStream.cs
Source:
SslStream.cs

Initialise une nouvelle instance de la classe SslStream à l'aide du Stream spécifié.

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)

Paramètres

innerStream
Stream

Objet Stream utilisé par SslStream pour envoyer et recevoir des données.

leaveInnerStreamOpen
Boolean

Valeur booléenne qui indique le comportement de fermeture de l'objet Stream utilisé par SslStream pour l'envoi et la réception de données. Ce paramètre indique si le flux interne est resté 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 accessible en lecture.

- 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 paramètre a la encryptionPolicy valeur EncryptionPolicy.NoEncryption.

S’applique à