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
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
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
innerStream
n’est pas accessible en lecture.
- ou -
innerStream
n’est pas accessible en écriture.
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
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 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.
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
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
- 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.
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
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
- 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.
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
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
- 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.
Remarques
L’utilisation du chiffrement Null est requise lorsque le paramètre a la encryptionPolicy
valeur EncryptionPolicy.NoEncryption.