SslStream Constructors
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Initialiseert een nieuw exemplaar van de SslStream klasse.
Overloads
| Name | Description |
|---|---|
| SslStream(Stream) |
Initialiseert een nieuw exemplaar van de SslStream klasse met behulp van de opgegeven Stream. |
| SslStream(Stream, Boolean) |
Initialiseert een nieuw exemplaar van de SslStream klasse met behulp van het opgegeven Stream gedrag en het afsluiten van stromen. |
| SslStream(Stream, Boolean, RemoteCertificateValidationCallback) |
Initialiseert een nieuw exemplaar van de SslStream klasse met behulp van het opgegeven Streamgedrag voor het sluiten van stromen en de gemachtigde voor certificaatvalidatie. |
| SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback) |
Initialiseert een nieuw exemplaar van de SslStream klasse met behulp van het opgegeven Streamgedrag voor het sluiten van stromen, de gemachtigde voor certificaatvalidatie en de gedelegeerde voor certificaatselectie. |
| SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy) |
Initialiseert een nieuw exemplaar van de SslStream klasse met behulp van de opgegeven Stream. |
Opmerkingen
Gebruik de SslStream constructor om te voorkomen dat de SslStream stroom die u opgeeft sluit.
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)
Parameters
- innerStream
- Stream
Een Stream object dat wordt gebruikt voor het SslStream verzenden en ontvangen van gegevens.
Uitzonderingen
Opmerkingen
Als er geen waarde is opgegeven in het configuratiebestand voor encryptionpolicy, wordt de EncryptionPolicy standaardwaarde ingesteld EncryptionPolicy.RequireEncryption op het SslStream exemplaar dat is samengesteld.
Het gebruik van null-codering is vereist wanneer het versleutelingsbeleid is ingesteld op EncryptionPolicy.NoEncryption.
Van toepassing op
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)
Parameters
- innerStream
- Stream
Een Stream object dat wordt gebruikt voor het SslStream verzenden en ontvangen van gegevens.
- leaveInnerStreamOpen
- Boolean
Een Booleaanse waarde die het sluitingsgedrag aangeeft van het Stream object dat wordt gebruikt voor het SslStream verzenden en ontvangen van gegevens. Deze parameter geeft aan of de binnenste stroom open blijft.
Uitzonderingen
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u deze constructor aanroept.
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
Opmerkingen
Wanneer u opgeeft voor de leaveStreamOpen parameter, heeft het sluiten van de SslStreaminnerStream stream geen effect. U moet expliciet sluiten innerStream wanneer u deze niet meer nodig true hebt.
Als er geen waarde is opgegeven in het configuratiebestand voor encryptionpolicy, wordt de EncryptionPolicy standaardwaarde ingesteld EncryptionPolicy.RequireEncryption op het SslStream exemplaar dat is samengesteld.
Het gebruik van null-codering is vereist wanneer het versleutelingsbeleid is ingesteld op EncryptionPolicy.NoEncryption.
Van toepassing op
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)
Parameters
- innerStream
- Stream
Een Stream object dat wordt gebruikt voor het SslStream verzenden en ontvangen van gegevens.
- leaveInnerStreamOpen
- Boolean
Een Booleaanse waarde die het sluitingsgedrag aangeeft van het Stream object dat wordt gebruikt voor het SslStream verzenden en ontvangen van gegevens. Deze parameter geeft aan of de binnenste stroom open blijft.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
Een RemoteCertificateValidationCallback gemachtigde die verantwoordelijk is voor het valideren van het certificaat dat door de externe partij is opgegeven.
Uitzonderingen
Voorbeelden
In het volgende codevoorbeeld wordt een SslStream clientgedeelte van de verificatie gemaakt en gestart.
// 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
Opmerkingen
Wanneer u opgeeft voor de leaveStreamOpen parameter, heeft het sluiten van de SslStreaminnerStream stream geen effect. U moet expliciet sluiten innerStream wanneer u deze niet meer nodig true hebt.
Het argument userCertificateValidationCallback gedelegeerde certificateErrors bevat eventuele Windows foutcodes die worden geretourneerd door de SSPI (Security Support Provider Interface). De retourwaarde van de methode die door de userCertificateValidationCallback gemachtigde wordt aangeroepen, bepaalt of de verificatie slaagt.
Het beveiligingsprotocol en de cryptografische algoritmen zijn al geselecteerd wanneer de methode van de userCertificateValidationCallback gemachtigde wordt aangeroepen. U kunt de methode gebruiken om te bepalen of de geselecteerde cryptografische algoritmen en sterke punten voldoende zijn voor uw toepassing. Als dat niet het geval is, moet de methode terugkeren false om te voorkomen dat de SslStream methode wordt gemaakt.
Als er geen waarde is opgegeven in het configuratiebestand voor encryptionpolicy, wordt de EncryptionPolicy standaardwaarde ingesteld EncryptionPolicy.RequireEncryption op het SslStream exemplaar dat is samengesteld.
Het gebruik van null-codering is vereist wanneer het versleutelingsbeleid is ingesteld op EncryptionPolicy.NoEncryption.
Note
.NET SSL-sessies in de cache opgeslagen terwijl ze worden gemaakt en probeert een sessie in de cache opnieuw te gebruiken voor volgende aanvragen, indien mogelijk. Bij een poging om een SSL-sessie opnieuw te gebruiken, gebruikt het Framework het eerste element van de X509Certificate2Collection opgegeven tijdens de verificatie (indien aanwezig) of probeert het een anonieme sessie opnieuw te gebruiken als de certificaatverzameling leeg is.
Note
Clientcertificaten worden niet ondersteund in het SSL-protocol versie 2.
Van toepassing op
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)
Parameters
- innerStream
- Stream
Een Stream object dat wordt gebruikt voor het SslStream verzenden en ontvangen van gegevens.
- leaveInnerStreamOpen
- Boolean
Een Booleaanse waarde die het sluitingsgedrag aangeeft van het Stream object dat wordt gebruikt voor het SslStream verzenden en ontvangen van gegevens. Deze parameter geeft aan of de binnenste stroom open blijft.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
Een RemoteCertificateValidationCallback gemachtigde die verantwoordelijk is voor het valideren van het certificaat dat door de externe partij is opgegeven.
- userCertificateSelectionCallback
- LocalCertificateSelectionCallback
Een LocalCertificateSelectionCallback gemachtigde die verantwoordelijk is voor het selecteren van het certificaat dat wordt gebruikt voor verificatie.
Uitzonderingen
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u deze constructor aanroept. Dit voorbeeld maakt deel uit van een groter voorbeeld voor de SslStream klasse.
// 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))
Opmerkingen
Wanneer u opgeeft voor de leaveStreamOpen parameter, heeft het sluiten van de SslStreaminnerStream stream geen effect. U moet expliciet sluiten innerStream wanneer u deze niet meer nodig true hebt.
Het argument userCertificateValidationCallback gedelegeerde certificateErrors bevat eventuele Windows foutcodes die worden geretourneerd door de SSPI (Security Support Provider Interface). De retourwaarde van de methode die door de userCertificateValidationCallback gemachtigde wordt aangeroepen, bepaalt of de verificatie slaagt.
Het beveiligingsprotocol en de cryptografische algoritmen zijn al geselecteerd wanneer de methode van de userCertificateValidationCallback gemachtigde wordt aangeroepen. U kunt de methode gebruiken om te bepalen of de geselecteerde cryptografische algoritmen en sterke punten voldoende zijn voor uw toepassing. Als dat niet het geval is, moet de methode terugkeren false om te voorkomen dat de SslStream methode wordt gemaakt.
De userCertificateSelectionCallback gemachtigde is handig wanneer uw toepassing meerdere certificaten heeft en dynamisch een certificaat moet kiezen. Certificaten in het archief 'MIJN' worden doorgegeven aan de methode die door de gemachtigde wordt aangeroepen.
Als er geen waarde is opgegeven in het configuratiebestand voor encryptionpolicy, wordt de EncryptionPolicy standaardwaarde ingesteld EncryptionPolicy.RequireEncryption op het SslStream exemplaar dat is samengesteld.
Het gebruik van null-codering is vereist wanneer het versleutelingsbeleid is ingesteld op EncryptionPolicy.NoEncryption.
Note
.NET SSL-sessies in de cache opgeslagen terwijl ze worden gemaakt en probeert een sessie in de cache opnieuw te gebruiken voor volgende aanvragen, indien mogelijk. Bij een poging om een SSL-sessie opnieuw te gebruiken, gebruikt het Framework het eerste element van de X509Certificate2Collection opgegeven tijdens de verificatie (indien aanwezig) of probeert het een anonieme sessie opnieuw te gebruiken als de certificaatverzameling leeg is.
Van toepassing op
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)
Parameters
- innerStream
- Stream
Een Stream object dat wordt gebruikt voor het SslStream verzenden en ontvangen van gegevens.
- leaveInnerStreamOpen
- Boolean
Een Booleaanse waarde die het sluitingsgedrag aangeeft van het Stream object dat wordt gebruikt voor het SslStream verzenden en ontvangen van gegevens. Deze parameter geeft aan of de binnenste stroom open blijft.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
Een RemoteCertificateValidationCallback gemachtigde die verantwoordelijk is voor het valideren van het certificaat dat door de externe partij is opgegeven.
- userCertificateSelectionCallback
- LocalCertificateSelectionCallback
Een LocalCertificateSelectionCallback gemachtigde die verantwoordelijk is voor het selecteren van het certificaat dat wordt gebruikt voor verificatie.
- encryptionPolicy
- EncryptionPolicy
De EncryptionPolicy te gebruiken.
Uitzonderingen
innerStream is niet leesbaar.
– of –
innerStream is niet beschrijfbaar.
– of –
encryptionPolicy is ongeldig.
Opmerkingen
Het gebruik van null-codering is vereist wanneer de encryptionPolicy parameter is ingesteld op EncryptionPolicy.NoEncryption.