SslStream Konstruktoren
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Initialisiert eine neue Instanz der SslStream-Klasse.
Überlädt
| Name | Beschreibung |
|---|---|
| SslStream(Stream) |
Initialisiert eine neue Instanz der Klasse mithilfe des SslStream angegebenen Stream. |
| SslStream(Stream, Boolean) |
Initialisiert eine neue Instanz der SslStream Klasse mithilfe des angegebenen Stream Und Datenstromschließverhaltens. |
| SslStream(Stream, Boolean, RemoteCertificateValidationCallback) |
Initialisiert eine neue Instanz der SslStream Klasse mithilfe des angegebenen StreamDatenstromschließverhaltens und des Zertifikatüberprüfungsdelegats. |
| SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback) |
Initialisiert eine neue Instanz der SslStream Klasse mithilfe des angegebenen StreamVerhaltens zum Schließen des Datenstroms, des Zertifikatüberprüfungsdelegats und des Zertifikatauswahldelegats. |
| SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy) |
Initialisiert eine neue Instanz der Klasse mithilfe des SslStream angegebenen Stream. |
Hinweise
Um das SslStream Schließen des von Ihnen angegebenen Datenstroms zu verhindern, verwenden Sie den SslStream Konstruktor.
SslStream(Stream)
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- 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)
Parameter
- innerStream
- Stream
Ein Stream Objekt, das SslStream vom Senden und Empfangen von Daten verwendet wird.
Ausnahmen
Hinweise
Wenn in der Konfigurationsdatei für die Verschlüsselungsrichtlinie kein Wert angegeben ist, werden die EncryptionPolicy Standardwerte EncryptionPolicy.RequireEncryption für die SslStream erstellte Instanz verwendet.
Die Verwendung der Null-Verschlüsselung ist erforderlich, wenn die Verschlüsselungsrichtlinie auf .EncryptionPolicy.NoEncryption
Gilt für:
SslStream(Stream, Boolean)
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- 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)
Parameter
- innerStream
- Stream
Ein Stream Objekt, das SslStream vom Senden und Empfangen von Daten verwendet wird.
- leaveInnerStreamOpen
- Boolean
Ein boolescher Wert, der das Schließen des Stream Objekts angibt, das SslStream vom Senden und Empfangen von Daten verwendet wird. Dieser Parameter gibt an, ob der innere Datenstrom geöffnet bleibt.
Ausnahmen
Beispiele
Im folgenden Codebeispiel wird das Aufrufen dieses Konstruktors veranschaulicht.
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
Hinweise
Wenn Sie für den Parameter angebentrue, hat das Schließen keine leaveStreamOpen Auswirkungen auf den SslStream Datenstrom. Sie müssen explizit schließeninnerStream, wenn Sie ihn nicht mehr innerStream benötigen.
Wenn in der Konfigurationsdatei für die Verschlüsselungsrichtlinie kein Wert angegeben ist, werden die EncryptionPolicy Standardwerte EncryptionPolicy.RequireEncryption für die SslStream erstellte Instanz verwendet.
Die Verwendung der Null-Verschlüsselung ist erforderlich, wenn die Verschlüsselungsrichtlinie auf .EncryptionPolicy.NoEncryption
Gilt für:
SslStream(Stream, Boolean, RemoteCertificateValidationCallback)
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- 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)
Parameter
- innerStream
- Stream
Ein Stream Objekt, das SslStream vom Senden und Empfangen von Daten verwendet wird.
- leaveInnerStreamOpen
- Boolean
Ein boolescher Wert, der das Schließen des Stream Objekts angibt, das SslStream vom Senden und Empfangen von Daten verwendet wird. Dieser Parameter gibt an, ob der innere Datenstrom geöffnet bleibt.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
Eine RemoteCertificateValidationCallback Stellvertretung, die für die Überprüfung des von der Remotepartei bereitgestellten Zertifikats zuständig ist.
Ausnahmen
Beispiele
Im folgenden Codebeispiel wird ein SslStream Clientteil der Authentifizierung erstellt und initiiert.
// 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
Hinweise
Wenn Sie für den Parameter angebentrue, hat das Schließen keine leaveStreamOpen Auswirkungen auf den SslStream Datenstrom. Sie müssen explizit schließeninnerStream, wenn Sie ihn nicht mehr innerStream benötigen.
Das Argument userCertificateValidationCallback Delegats certificateErrors enthält alle Windows Fehlercodes, die von der SSPI (Security Support Provider Interface) des Kanals zurückgegeben werden. Der Rückgabewert der von der userCertificateValidationCallback Stellvertretung aufgerufenen Methode bestimmt, ob die Authentifizierung erfolgreich ist.
Das Sicherheitsprotokoll und kryptografische Algorithmen werden bereits ausgewählt, wenn die Methode des userCertificateValidationCallback Delegaten aufgerufen wird. Mit der Methode können Sie ermitteln, ob die ausgewählten kryptografischen Algorithmen und Stärken für Ihre Anwendung ausreichend sind. Wenn nicht, sollte die Methode zurückgegeben werden false , um zu verhindern, dass die SslStream Erstellung erfolgt.
Wenn in der Konfigurationsdatei für die Verschlüsselungsrichtlinie kein Wert angegeben ist, werden die EncryptionPolicy Standardwerte EncryptionPolicy.RequireEncryption für die SslStream erstellte Instanz verwendet.
Die Verwendung der Null-Verschlüsselung ist erforderlich, wenn die Verschlüsselungsrichtlinie auf .EncryptionPolicy.NoEncryption
Note
.NET speichert SSL-Sitzungen während der Erstellung zwischen und versucht, eine zwischengespeicherte Sitzung für nachfolgende Anforderungen nach Möglichkeit wiederzuverwenden. Wenn Sie versuchen, eine SSL-Sitzung wiederzuverwenden, verwendet das Framework das erste Element der X509Certificate2Collection bereitgestellten Authentifizierung (sofern vorhanden), oder versucht, eine anonyme Sitzung wiederzuverwenden, wenn die Zertifikatsammlung leer ist.
Note
Clientzertifikate werden im SSL Version 2-Protokoll nicht unterstützt.
Gilt für:
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- 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)
Parameter
- innerStream
- Stream
Ein Stream Objekt, das SslStream vom Senden und Empfangen von Daten verwendet wird.
- leaveInnerStreamOpen
- Boolean
Ein boolescher Wert, der das Schließen des Stream Objekts angibt, das SslStream vom Senden und Empfangen von Daten verwendet wird. Dieser Parameter gibt an, ob der innere Datenstrom geöffnet bleibt.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
Eine RemoteCertificateValidationCallback Stellvertretung, die für die Überprüfung des von der Remotepartei bereitgestellten Zertifikats zuständig ist.
- userCertificateSelectionCallback
- LocalCertificateSelectionCallback
Eine LocalCertificateSelectionCallback Stellvertretung, die für die Auswahl des für die Authentifizierung verwendeten Zertifikats zuständig ist.
Ausnahmen
Beispiele
Im folgenden Codebeispiel wird das Aufrufen dieses Konstruktors veranschaulicht. Dieses Beispiel ist Teil eines größeren Beispiels, das für die SslStream Klasse bereitgestellt wird.
// 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))
Hinweise
Wenn Sie für den Parameter angebentrue, hat das Schließen keine leaveStreamOpen Auswirkungen auf den SslStream Datenstrom. Sie müssen explizit schließeninnerStream, wenn Sie ihn nicht mehr innerStream benötigen.
Das Argument userCertificateValidationCallback Delegats certificateErrors enthält alle Windows Fehlercodes, die von der SSPI (Security Support Provider Interface) des Kanals zurückgegeben werden. Der Rückgabewert der von der userCertificateValidationCallback Stellvertretung aufgerufenen Methode bestimmt, ob die Authentifizierung erfolgreich ist.
Das Sicherheitsprotokoll und kryptografische Algorithmen werden bereits ausgewählt, wenn die Methode des userCertificateValidationCallback Delegaten aufgerufen wird. Mit der Methode können Sie ermitteln, ob die ausgewählten kryptografischen Algorithmen und Stärken für Ihre Anwendung ausreichend sind. Wenn nicht, sollte die Methode zurückgegeben werden false , um zu verhindern, dass die SslStream Erstellung erfolgt.
Die userCertificateSelectionCallback Stellvertretung ist nützlich, wenn Ihre Anwendung über mehrere Zertifikate verfügt und dynamisch ein Zertifikat auswählen muss. Zertifikate im "MY"-Speicher werden an die methode übergeben, die vom Delegaten aufgerufen wird.
Wenn in der Konfigurationsdatei für die Verschlüsselungsrichtlinie kein Wert angegeben ist, werden die EncryptionPolicy Standardwerte EncryptionPolicy.RequireEncryption für die SslStream erstellte Instanz verwendet.
Die Verwendung der Null-Verschlüsselung ist erforderlich, wenn die Verschlüsselungsrichtlinie auf .EncryptionPolicy.NoEncryption
Note
.NET speichert SSL-Sitzungen während der Erstellung zwischen und versucht, eine zwischengespeicherte Sitzung für nachfolgende Anforderungen nach Möglichkeit wiederzuverwenden. Wenn Sie versuchen, eine SSL-Sitzung wiederzuverwenden, verwendet das Framework das erste Element der X509Certificate2Collection bereitgestellten Authentifizierung (sofern vorhanden), oder versucht, eine anonyme Sitzung wiederzuverwenden, wenn die Zertifikatsammlung leer ist.
Gilt für:
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy)
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.cs
- Quelle:
- SslStream.IO.cs
- Quelle:
- SslStream.cs
- Quelle:
- 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)
Parameter
- innerStream
- Stream
Ein Stream Objekt, das SslStream vom Senden und Empfangen von Daten verwendet wird.
- leaveInnerStreamOpen
- Boolean
Ein boolescher Wert, der das Schließen des Stream Objekts angibt, das SslStream vom Senden und Empfangen von Daten verwendet wird. Dieser Parameter gibt an, ob der innere Datenstrom geöffnet bleibt.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
Eine RemoteCertificateValidationCallback Stellvertretung, die für die Überprüfung des von der Remotepartei bereitgestellten Zertifikats zuständig ist.
- userCertificateSelectionCallback
- LocalCertificateSelectionCallback
Eine LocalCertificateSelectionCallback Stellvertretung, die für die Auswahl des für die Authentifizierung verwendeten Zertifikats zuständig ist.
- encryptionPolicy
- EncryptionPolicy
Die EncryptionPolicy zu verwendende.
Ausnahmen
innerStream ist nicht lesbar.
-oder-
innerStream ist nicht schreibbar.
-oder-
encryptionPolicy ist ungültig.
Hinweise
Die Verwendung der Null-Chiffre ist erforderlich, wenn der encryptionPolicy Parameter auf EncryptionPolicy.NoEncryption.