SslStream Constructores

Definición

Inicializa una nueva instancia de la clase SslStream.

Sobrecargas

Nombre Description
SslStream(Stream)

Inicializa una nueva instancia de la SslStream clase utilizando el especificado Stream.

SslStream(Stream, Boolean)

Inicializa una nueva instancia de la SslStream clase utilizando el comportamiento de cierre de flujo y especificado Stream .

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Inicializa una nueva instancia de la SslStream clase mediante el comportamiento de cierre de flujos y el delegado de validación de certificados especificados Stream.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Inicializa una nueva instancia de la SslStream clase mediante el comportamiento de cierre de flujos, el delegado de validación de certificados y el delegado de selección de certificados especificados Stream.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy)

Inicializa una nueva instancia de la SslStream clase utilizando el especificado Stream.

Comentarios

Para evitar que SslStream cierre la secuencia que proporcione, use el SslStream constructor .

SslStream(Stream)

Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs

Inicializa una nueva instancia de la SslStream clase utilizando el especificado 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)

Parámetros

innerStream
Stream

Objeto Stream utilizado por para SslStream enviar y recibir datos.

Excepciones

innerStream no es legible.

O bien

innerStream no se puede escribir.

innerStream es null.

O bien

innerStream es igual a Null.

Comentarios

Si no se especifica un valor en el archivo de configuración para encryptionpolicy, el EncryptionPolicy valor predeterminado EncryptionPolicy.RequireEncryption para la SslStream instancia que se construye.

El uso del cifrado Null es necesario cuando la directiva de cifrado se establece EncryptionPolicy.NoEncryptionen .

Se aplica a

SslStream(Stream, Boolean)

Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs

Inicializa una nueva instancia de la SslStream clase utilizando el comportamiento de cierre de flujo y especificado Stream .

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)

Parámetros

innerStream
Stream

Objeto Stream utilizado por para SslStream enviar y recibir datos.

leaveInnerStreamOpen
Boolean

Valor booleano que indica el comportamiento de cierre del Stream objeto utilizado por SslStream para enviar y recibir datos. Este parámetro indica si la secuencia interna se deja abierta.

Excepciones

innerStream no es legible.

O bien

innerStream no se puede escribir.

innerStream es null.

O bien

innerStream es igual a Null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo llamar a este constructor.

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

Comentarios

Cuando se especifica true para el leaveStreamOpen parámetro , el cierre SslStream no tiene ningún efecto en la innerStream secuencia; debe cerrarse innerStream explícitamente cuando ya no lo necesite.

Si no se especifica un valor en el archivo de configuración para encryptionpolicy, el EncryptionPolicy valor predeterminado EncryptionPolicy.RequireEncryption para la SslStream instancia que se construye.

El uso del cifrado Null es necesario cuando la directiva de cifrado se establece EncryptionPolicy.NoEncryptionen .

Se aplica a

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs

Inicializa una nueva instancia de la SslStream clase mediante el comportamiento de cierre de flujos y el delegado de validación de certificados especificados Stream.

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)

Parámetros

innerStream
Stream

Objeto Stream utilizado por para SslStream enviar y recibir datos.

leaveInnerStreamOpen
Boolean

Valor booleano que indica el comportamiento de cierre del Stream objeto utilizado por SslStream para enviar y recibir datos. Este parámetro indica si la secuencia interna se deja abierta.

userCertificateValidationCallback
RemoteCertificateValidationCallback

RemoteCertificateValidationCallback Delegado responsable de validar el certificado proporcionado por la entidad remota.

Excepciones

innerStream no es legible.

O bien

innerStream no se puede escribir.

innerStream es null.

O bien

innerStream es igual a Null.

Ejemplos

En el ejemplo de código siguiente se crea SslStream e inicia la parte del cliente de la autenticación.

// 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

Comentarios

Cuando se especifica true para el leaveStreamOpen parámetro , el cierre SslStream no tiene ningún efecto en la innerStream secuencia; debe cerrarse innerStream explícitamente cuando ya no lo necesite.

El argumento userCertificateValidationCallback del delegado certificateErrors contiene los códigos de error Windows devueltos por el canal Security Support Provider Interface (SSPI). El valor devuelto del método invocado por el userCertificateValidationCallback delegado determina si la autenticación se realiza correctamente.

El protocolo de seguridad y los algoritmos criptográficos ya están seleccionados cuando se invoca el userCertificateValidationCallback método del delegado. Puede usar el método para determinar si los algoritmos criptográficos y puntos fuertes seleccionados son suficientes para la aplicación. Si no es así, el método debe devolver false para evitar que SslStream se cree .

Si no se especifica un valor en el archivo de configuración para encryptionpolicy, el EncryptionPolicy valor predeterminado EncryptionPolicy.RequireEncryption para la SslStream instancia que se construye.

El uso del cifrado Null es necesario cuando la directiva de cifrado se establece EncryptionPolicy.NoEncryptionen .

Note

.NET almacena en caché las sesiones SSL a medida que se crean e intentan reutilizar una sesión almacenada en caché para las solicitudes posteriores, si es posible. Al intentar reutilizar una sesión SSL, framework usa el primer elemento del proporcionado durante la X509Certificate2Collection autenticación (si hay alguno) o intenta reutilizar una sesión anónima si la colección de certificados está vacía.

Note

Los certificados de cliente no se admiten en el protocolo SSL versión 2.

Se aplica a

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.cs

Inicializa una nueva instancia de la SslStream clase mediante el comportamiento de cierre de flujos, el delegado de validación de certificados y el delegado de selección de certificados especificados Stream.

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)

Parámetros

innerStream
Stream

Objeto Stream utilizado por para SslStream enviar y recibir datos.

leaveInnerStreamOpen
Boolean

Valor booleano que indica el comportamiento de cierre del Stream objeto utilizado por SslStream para enviar y recibir datos. Este parámetro indica si la secuencia interna se deja abierta.

userCertificateValidationCallback
RemoteCertificateValidationCallback

RemoteCertificateValidationCallback Delegado responsable de validar el certificado proporcionado por la entidad remota.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

LocalCertificateSelectionCallback Delegado responsable de seleccionar el certificado usado para la autenticación.

Excepciones

innerStream no es legible.

O bien

innerStream no se puede escribir.

innerStream es null.

O bien

innerStream es igual a Null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo llamar a este constructor. Este ejemplo forma parte de un ejemplo más grande proporcionado para la SslStream clase .

// 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))

Comentarios

Cuando se especifica true para el leaveStreamOpen parámetro , el cierre SslStream no tiene ningún efecto en la innerStream secuencia; debe cerrarse innerStream explícitamente cuando ya no lo necesite.

El argumento userCertificateValidationCallback del delegado certificateErrors contiene los códigos de error Windows devueltos por el canal Security Support Provider Interface (SSPI). El valor devuelto del método invocado por el userCertificateValidationCallback delegado determina si la autenticación se realiza correctamente.

El protocolo de seguridad y los algoritmos criptográficos ya están seleccionados cuando se invoca el userCertificateValidationCallback método del delegado. Puede usar el método para determinar si los algoritmos criptográficos y puntos fuertes seleccionados son suficientes para la aplicación. Si no es así, el método debe devolver false para evitar que SslStream se cree .

El userCertificateSelectionCallback delegado es útil cuando la aplicación tiene varios certificados y debe elegir dinámicamente un certificado. Los certificados del almacén "MY" se pasan al método invocado por el delegado.

Si no se especifica un valor en el archivo de configuración para encryptionpolicy, el EncryptionPolicy valor predeterminado EncryptionPolicy.RequireEncryption para la SslStream instancia que se construye.

El uso del cifrado Null es necesario cuando la directiva de cifrado se establece EncryptionPolicy.NoEncryptionen .

Note

.NET almacena en caché las sesiones SSL a medida que se crean e intentan reutilizar una sesión almacenada en caché para las solicitudes posteriores, si es posible. Al intentar reutilizar una sesión SSL, framework usa el primer elemento del proporcionado durante la X509Certificate2Collection autenticación (si hay alguno) o intenta reutilizar una sesión anónima si la colección de certificados está vacía.

Se aplica a

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy)

Source:
SslStream.cs
Source:
SslStream.cs
Source:
SslStream.IO.cs
Source:
SslStream.cs
Source:
SslStream.cs

Inicializa una nueva instancia de la SslStream clase utilizando el especificado Stream.

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)

Parámetros

innerStream
Stream

Objeto Stream utilizado por para SslStream enviar y recibir datos.

leaveInnerStreamOpen
Boolean

Valor booleano que indica el comportamiento de cierre del Stream objeto utilizado por SslStream para enviar y recibir datos. Este parámetro indica si la secuencia interna se deja abierta.

userCertificateValidationCallback
RemoteCertificateValidationCallback

RemoteCertificateValidationCallback Delegado responsable de validar el certificado proporcionado por la entidad remota.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

LocalCertificateSelectionCallback Delegado responsable de seleccionar el certificado usado para la autenticación.

encryptionPolicy
EncryptionPolicy

que EncryptionPolicy se va a usar.

Excepciones

innerStream no es legible.

O bien

innerStream no se puede escribir.

O bien

encryptionPolicy no es válido.

innerStream es null.

O bien

innerStream es igual a Null.

Comentarios

El uso del cifrado Null es necesario cuando el encryptionPolicy parámetro se establece EncryptionPolicy.NoEncryptionen .

Se aplica a