SslStream Constructeurs
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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)
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
Exceptions
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)
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
- 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
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)
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
- 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
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)
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
- 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
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)
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
- 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.
Remarques
L’utilisation du chiffrement Null est requise lorsque le encryptionPolicy paramètre est défini sur EncryptionPolicy.NoEncryption.