SslStream Oluşturucular
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
SslStream sınıfının yeni bir örneğini başlatır.
Aşırı Yüklemeler
SslStream(Stream) |
Belirtilen Streamkullanarak sınıfının yeni bir örneğini SslStream başlatır. |
SslStream(Stream, Boolean) |
Belirtilen Stream ve akış kapatma davranışını kullanarak sınıfının yeni bir örneğini SslStream başlatır. |
SslStream(Stream, Boolean, RemoteCertificateValidationCallback) |
Belirtilen Stream, akış kapatma davranışı ve sertifika doğrulama temsilcisini kullanarak sınıfının yeni bir örneğini SslStream başlatır. |
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback) |
Belirtilen Stream, akış kapatma davranışı, sertifika doğrulama temsilcisi ve sertifika seçimi temsilcisini kullanarak sınıfının yeni bir örneğini SslStream başlatır. |
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy) |
Belirtilen Streamkullanarak sınıfının yeni bir örneğini SslStream başlatır. |
Açıklamalar
öğesinin SslStream sağladığınız akışı kapatmasını önlemek için oluşturucuyu SslStream kullanın.
SslStream(Stream)
- Kaynak:
- SslStream.cs
- Kaynak:
- SslStream.cs
- Kaynak:
- 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)
Parametreler
Özel durumlar
Açıklamalar
Şifreleme için yapılandırma dosyasında bir değer belirtilmezse, EncryptionPolicyEncryptionPolicy.RequireEncryption varsayılan değeri, oluşturulduğunda örnek için SslStream olarak ayarlanır.
Şifreleme ilkesi olarak ayarlandığında EncryptionPolicy.NoEncryptionNull şifrelemenin kullanılması gerekir.
Şunlara uygulanır
SslStream(Stream, Boolean)
- Kaynak:
- SslStream.cs
- Kaynak:
- SslStream.cs
- Kaynak:
- 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)
Parametreler
- leaveInnerStreamOpen
- Boolean
tarafından SslStream veri göndermek ve almak için kullanılan nesnenin Stream kapatma davranışını gösteren boole değeri. Bu parametre, iç akışın açık bırakılıp bırakılmadiğini gösterir.
Özel durumlar
Örnekler
Aşağıdaki kod örneğinde bu oluşturucunun çağrılması gösterilmektedir.
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
Açıklamalar
parametresini belirttiğinizde true
leaveStreamOpen
, öğesini kapatmanın innerStream
SslStream akış üzerinde hiçbir etkisi yoktur; artık ihtiyacınız olmadığında açıkça kapatmanız innerStream
gerekir.
Şifreleme için yapılandırma dosyasında bir değer belirtilmezse, EncryptionPolicyEncryptionPolicy.RequireEncryption varsayılan değeri, oluşturulduğunda örnek için SslStream olarak ayarlanır.
Şifreleme ilkesi olarak ayarlandığında EncryptionPolicy.NoEncryptionNull şifrelemenin kullanılması gerekir.
Şunlara uygulanır
SslStream(Stream, Boolean, RemoteCertificateValidationCallback)
- Kaynak:
- SslStream.cs
- Kaynak:
- SslStream.cs
- Kaynak:
- 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)
Parametreler
- leaveInnerStreamOpen
- Boolean
tarafından SslStream veri göndermek ve almak için kullanılan nesnenin Stream kapatma davranışını gösteren boole değeri. Bu parametre, iç akışın açık bırakılıp bırakılmadiğini gösterir.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
Uzak RemoteCertificateValidationCallback taraf tarafından sağlanan sertifikayı doğrulamadan sorumlu bir temsilci.
Özel durumlar
Örnekler
Aşağıdaki kod örneği bir SslStream oluşturur ve kimlik doğrulamasının istemci bölümünü başlatır.
// 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
Açıklamalar
parametresini belirttiğinizde true
leaveStreamOpen
, öğesini kapatmanın innerStream
SslStream akış üzerinde hiçbir etkisi yoktur; artık ihtiyacınız olmadığında açıkça kapatmanız innerStream
gerekir.
Temsilcinin userCertificateValidationCallback
certificateErrors
bağımsız değişkeni, kanal Güvenlik Desteği Sağlayıcısı Arabirimi (SSPI) tarafından döndürülen tüm Windows hata kodlarını içerir. Temsilci tarafından çağrılan yöntemin dönüş değeri, kimlik doğrulamasının userCertificateValidationCallback
başarılı olup olmadığını belirler.
Temsilcinin yöntemi çağrıldığında userCertificateValidationCallback
güvenlik protokolü ve şifreleme algoritmaları zaten seçilidir. Seçilen şifreleme algoritmalarının ve güçlü yanlarının uygulamanız için yeterli olup olmadığını belirlemek için yöntemini kullanabilirsiniz. Aksi takdirde, yönteminin oluşturulmasını önlemek SslStream için döndürülmesi false
gerekir.
Şifreleme için yapılandırma dosyasında bir değer belirtilmezse, EncryptionPolicyEncryptionPolicy.RequireEncryption varsayılan değeri, oluşturulduğunda örnek için SslStream olarak ayarlanır.
Şifreleme ilkesi olarak ayarlandığında EncryptionPolicy.NoEncryptionNull şifrelemenin kullanılması gerekir.
Not
.NET, SSL oturumlarını oluşturuldukları anda önbelleğe alır ve mümkünse sonraki istekler için önbelleğe alınmış bir oturumu yeniden kullanmaya çalışır. Bir SSL oturumunu yeniden kullanmaya çalışırken, Framework kimlik doğrulaması sırasında sağlanan ilk öğesini X509Certificate2Collection kullanır (varsa) veya sertifika koleksiyonu boşsa anonim oturumları yeniden kullanmaya çalışır.
Not
İstemci sertifikaları SSL sürüm 2 protokolünde desteklenmez.
Şunlara uygulanır
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)
- Kaynak:
- SslStream.cs
- Kaynak:
- SslStream.cs
- Kaynak:
- 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)
Parametreler
- leaveInnerStreamOpen
- Boolean
tarafından SslStream veri göndermek ve almak için kullanılan nesnenin Stream kapatma davranışını gösteren boole değeri. Bu parametre, iç akışın açık bırakılıp bırakılmadiğini gösterir.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
Uzak RemoteCertificateValidationCallback taraf tarafından sağlanan sertifikayı doğrulamadan sorumlu bir temsilci.
- userCertificateSelectionCallback
- LocalCertificateSelectionCallback
LocalCertificateSelectionCallback Kimlik doğrulaması için kullanılan sertifikayı seçmekle sorumlu bir temsilci.
Özel durumlar
Örnekler
Aşağıdaki kod örneğinde bu oluşturucunun çağrılması gösterilmektedir. Bu örnek, sınıfı için SslStream sağlanan daha büyük bir örneğin parçasıdır.
// 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))
Açıklamalar
parametresini belirttiğinizde true
leaveStreamOpen
, öğesini kapatmanın innerStream
SslStream akış üzerinde hiçbir etkisi yoktur; artık ihtiyacınız olmadığında açıkça kapatmanız innerStream
gerekir.
Temsilcinin userCertificateValidationCallback
certificateErrors
bağımsız değişkeni, kanal Güvenlik Desteği Sağlayıcısı Arabirimi (SSPI) tarafından döndürülen tüm Windows hata kodlarını içerir. Temsilci tarafından çağrılan yöntemin dönüş değeri, kimlik doğrulamasının userCertificateValidationCallback
başarılı olup olmadığını belirler.
Temsilcinin yöntemi çağrıldığında userCertificateValidationCallback
güvenlik protokolü ve şifreleme algoritmaları zaten seçilidir. Seçilen şifreleme algoritmalarının ve güçlü yanlarının uygulamanız için yeterli olup olmadığını belirlemek için yöntemini kullanabilirsiniz. Aksi takdirde, yönteminin oluşturulmasını önlemek SslStream için döndürülmesi false
gerekir.
Temsilci userCertificateSelectionCallback
, uygulamanızın birden çok sertifikası olduğunda ve dinamik olarak bir sertifika seçmesi gerektiğinde kullanışlıdır. "MY" deposundaki sertifikalar, temsilci tarafından çağrılan yönteme geçirilir.
Şifreleme için yapılandırma dosyasında bir değer belirtilmezse, EncryptionPolicyEncryptionPolicy.RequireEncryption varsayılan değeri, oluşturulduğunda örnek için SslStream olarak ayarlanır.
Şifreleme ilkesi olarak ayarlandığında EncryptionPolicy.NoEncryptionNull şifrelemenin kullanılması gerekir.
Not
.NET, SSL oturumlarını oluşturuldukları anda önbelleğe alır ve mümkünse sonraki istekler için önbelleğe alınmış bir oturumu yeniden kullanmaya çalışır. Bir SSL oturumunu yeniden kullanmaya çalışırken, Framework kimlik doğrulaması sırasında sağlanan ilk öğesini X509Certificate2Collection kullanır (varsa) veya sertifika koleksiyonu boşsa anonim oturumları yeniden kullanmaya çalışır.
Şunlara uygulanır
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy)
- Kaynak:
- SslStream.IO.cs
- Kaynak:
- SslStream.cs
- Kaynak:
- 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)
Parametreler
- leaveInnerStreamOpen
- Boolean
tarafından SslStream veri göndermek ve almak için kullanılan nesnenin Stream kapatma davranışını gösteren boole değeri. Bu parametre, iç akışın açık bırakılıp bırakılmadiğini gösterir.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
RemoteCertificateValidationCallback Uzak taraf tarafından sağlanan sertifikayı doğrulamadan sorumlu bir temsilci.
- userCertificateSelectionCallback
- LocalCertificateSelectionCallback
LocalCertificateSelectionCallback Kimlik doğrulaması için kullanılan sertifikayı seçmekle sorumlu bir temsilci.
- encryptionPolicy
- EncryptionPolicy
EncryptionPolicy Kullanılacak.
Özel durumlar
innerStream
okunamaz.
-veya-
innerStream
yazılabilir değildir.
-veya-
encryptionPolicy
geçerli değil.
Açıklamalar
Parametresi olarak ayarlandığında EncryptionPolicy.NoEncryptionNull şifrelemenin encryptionPolicy
kullanılması gerekir.