SslStream Konstruktory
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Inicializuje novou instanci SslStream třídy.
Přetížení
| Name | Description |
|---|---|
| SslStream(Stream) |
Inicializuje novou instanci SslStream třídy pomocí zadané Stream. |
| SslStream(Stream, Boolean) |
Inicializuje novou instanci SslStream třídy pomocí zadaného Stream a stream uzavření chování. |
| SslStream(Stream, Boolean, RemoteCertificateValidationCallback) |
Inicializuje novou instanci SslStream třídy pomocí zadaného Streamchování , chování uzavření datového proudu a delegát ověření certifikátu. |
| SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback) |
Inicializuje novou instanci SslStream třídy pomocí zadaného Streamchování , chování při uzavření datového proudu, delegát ověření certifikátu a delegát výběru certifikátu. |
| SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy) |
Inicializuje novou instanci SslStream třídy pomocí zadané Stream. |
Poznámky
Chcete-li zabránit zavření datového SslStream proudu, který zadáte, použijte SslStream konstruktor.
SslStream(Stream)
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- 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)
Parametry
Výjimky
Poznámky
Pokud v konfiguračním souboru není zadaná hodnota pro zásadu EncryptionPolicy šifrování, EncryptionPolicy.RequireEncryption výchozí hodnota SslStream je pro instanci, která je vytvořena.
Použití šifry null je vyžadováno, pokud je zásada šifrování nastavena na EncryptionPolicy.NoEncryption.
Platí pro
SslStream(Stream, Boolean)
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- 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)
Parametry
- leaveInnerStreamOpen
- Boolean
Logická hodnota, která označuje chování uzavření objektu Stream používaného SslStream pro odesílání a příjem dat. Tento parametr označuje, jestli je vnitřní datový proud otevřený.
Výjimky
Příklady
Následující příklad kódu ukazuje volání tohoto konstruktoru.
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
Poznámky
Když zadáte true parametr leaveStreamOpen , zavření SslStream datového innerStream proudu nemá žádný vliv. Pokud ho už nepotřebujete, musíte explicitně zavřít innerStream .
Pokud v konfiguračním souboru není zadaná hodnota pro zásadu EncryptionPolicy šifrování, EncryptionPolicy.RequireEncryption výchozí hodnota SslStream je pro instanci, která je vytvořena.
Použití šifry null je vyžadováno, pokud je zásada šifrování nastavena na EncryptionPolicy.NoEncryption.
Platí pro
SslStream(Stream, Boolean, RemoteCertificateValidationCallback)
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- 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)
Parametry
- leaveInnerStreamOpen
- Boolean
Logická hodnota, která označuje chování uzavření objektu Stream používaného SslStream pro odesílání a příjem dat. Tento parametr označuje, jestli je vnitřní datový proud otevřený.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
RemoteCertificateValidationCallback Delegát zodpovědný za ověření certifikátu poskytnutého vzdálenou stranou.
Výjimky
Příklady
Následující příklad kódu vytvoří SslStream a inicializuje část ověřování klienta.
// 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
Poznámky
Když zadáte true parametr leaveStreamOpen , zavření SslStream datového innerStream proudu nemá žádný vliv. Pokud ho už nepotřebujete, musíte explicitně zavřít innerStream .
Argument userCertificateValidationCallback delegáta certificateErrors obsahuje kódy chyb Windows vrácené rozhraním SSPI (Security Support Provider Interface). Návratová hodnota metody vyvolaná delegátem userCertificateValidationCallback určuje, zda ověřování proběhne úspěšně.
Protokol zabezpečení a kryptografické algoritmy jsou již vybrány při userCertificateValidationCallback vyvolání metody delegáta. Metodu můžete použít k určení, zda vybrané kryptografické algoritmy a silné stránky jsou pro vaši aplikaci dostatečné. Pokud ne, měla by se metoda vrátit false , aby se zabránilo SslStream vytvoření.
Pokud v konfiguračním souboru není zadaná hodnota pro zásadu EncryptionPolicy šifrování, EncryptionPolicy.RequireEncryption výchozí hodnota SslStream je pro instanci, která je vytvořena.
Použití šifry null je vyžadováno, pokud je zásada šifrování nastavena na EncryptionPolicy.NoEncryption.
Note
.NET ukládá relace SSL do mezipaměti při jejich vytváření a pokud je to možné, pokusí se znovu použít relaci uloženou v mezipaměti. Při pokusu o opakované použití relace SSL používá framework první prvek X509Certificate2Collection poskytnutého během ověřování (pokud existuje) nebo se pokusí znovu použít anonymní relace, pokud je kolekce certifikátů prázdná.
Note
Klientské certifikáty nejsou podporovány v protokolu SSL verze 2.
Platí pro
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- 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)
Parametry
- leaveInnerStreamOpen
- Boolean
Logická hodnota, která označuje chování uzavření objektu Stream používaného SslStream pro odesílání a příjem dat. Tento parametr označuje, jestli je vnitřní datový proud otevřený.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
RemoteCertificateValidationCallback Delegát zodpovědný za ověření certifikátu poskytnutého vzdálenou stranou.
- userCertificateSelectionCallback
- LocalCertificateSelectionCallback
LocalCertificateSelectionCallback Delegát zodpovědný za výběr certifikátu použitého k ověřování.
Výjimky
Příklady
Následující příklad kódu ukazuje volání tohoto konstruktoru. Tento příklad je součástí většího příkladu poskytnutého SslStream pro třídu.
// 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))
Poznámky
Když zadáte true parametr leaveStreamOpen , zavření SslStream datového innerStream proudu nemá žádný vliv. Pokud ho už nepotřebujete, musíte explicitně zavřít innerStream .
Argument userCertificateValidationCallback delegáta certificateErrors obsahuje kódy chyb Windows vrácené rozhraním SSPI (Security Support Provider Interface). Návratová hodnota metody vyvolaná delegátem userCertificateValidationCallback určuje, zda ověřování proběhne úspěšně.
Protokol zabezpečení a kryptografické algoritmy jsou již vybrány při userCertificateValidationCallback vyvolání metody delegáta. Metodu můžete použít k určení, zda vybrané kryptografické algoritmy a silné stránky jsou pro vaši aplikaci dostatečné. Pokud ne, měla by se metoda vrátit false , aby se zabránilo SslStream vytvoření.
Delegát userCertificateSelectionCallback je užitečný, pokud má vaše aplikace více certifikátů a musí dynamicky zvolit certifikát. Certifikáty v úložišti MY se předávají metodě vyvolané delegátem.
Pokud v konfiguračním souboru není zadaná hodnota pro zásadu EncryptionPolicy šifrování, EncryptionPolicy.RequireEncryption výchozí hodnota SslStream je pro instanci, která je vytvořena.
Použití šifry null je vyžadováno, pokud je zásada šifrování nastavena na EncryptionPolicy.NoEncryption.
Note
.NET ukládá relace SSL do mezipaměti při jejich vytváření a pokud je to možné, pokusí se znovu použít relaci uloženou v mezipaměti. Při pokusu o opakované použití relace SSL používá framework první prvek X509Certificate2Collection poskytnutého během ověřování (pokud existuje) nebo se pokusí znovu použít anonymní relace, pokud je kolekce certifikátů prázdná.
Platí pro
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy)
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- SslStream.IO.cs
- Zdroj:
- SslStream.cs
- Zdroj:
- 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)
Parametry
- leaveInnerStreamOpen
- Boolean
Logická hodnota, která označuje chování uzavření objektu Stream používaného SslStream pro odesílání a příjem dat. Tento parametr označuje, jestli je vnitřní datový proud otevřený.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
RemoteCertificateValidationCallback Delegát zodpovědný za ověření certifikátu poskytnutého vzdálenou stranou.
- userCertificateSelectionCallback
- LocalCertificateSelectionCallback
LocalCertificateSelectionCallback Delegát zodpovědný za výběr certifikátu použitého k ověřování.
- encryptionPolicy
- EncryptionPolicy
To EncryptionPolicy se má použít.
Výjimky
innerStream není čitelný.
nebo
innerStream není zapisovatelný.
nebo
encryptionPolicy není platný.
Poznámky
Použití šifry Null je vyžadováno, pokud encryptionPolicy je parametr nastaven na EncryptionPolicy.NoEncryption.