SslStream Constructores

Definición

Inicializa una nueva instancia de la clase SslStream.

Sobrecargas

SslStream(Stream)

Inicializa una nueva instancia de la clase SslStream utilizando la clase Stream especificada.

SslStream(Stream, Boolean)

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

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Inicializa una nueva instancia de la clase SslStream utilizando el objeto Stream, el comportamiento de cierre de secuencias y el delegado de validación de certificados especificados.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Inicializa una nueva instancia de la clase SslStream utilizando el objeto Stream, el delegado de validación de certificados y el delegado de selección de certificados especificados.

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

Inicializa una nueva instancia de la clase SslStream utilizando la clase Stream especificada.

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

Inicializa una nueva instancia de la clase SslStream utilizando la clase Stream especificada.

public SslStream (System.IO.Stream innerStream);

Parámetros

innerStream
Stream

Objeto Stream que la clase SslStream utiliza para enviar y recibir datos.

Excepciones

No se puede leer en innerStream.

O bien

No se puede escribir en innerStream.

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

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

SslStream(Stream, Boolean)

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

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

public SslStream (System.IO.Stream innerStream, bool leaveInnerStreamOpen);

Parámetros

innerStream
Stream

Objeto Stream que la clase SslStream utiliza para enviar y recibir datos.

leaveInnerStreamOpen
Boolean

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

Excepciones

No se puede leer en innerStream.

O bien

No se puede escribir en innerStream.

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();
    }
}

Comentarios

Cuando se especifica true para el leaveStreamOpen parámetro , cerrar el SslStream no tiene ningún efecto en la innerStream secuencia; debe cerrar 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 es 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

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

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

Inicializa una nueva instancia de la clase SslStream utilizando el objeto Stream, el comportamiento de cierre de secuencias y el delegado de validación de certificados especificados.

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

Parámetros

innerStream
Stream

Objeto Stream que la clase SslStream utiliza para enviar y recibir datos.

leaveInnerStreamOpen
Boolean

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

userCertificateValidationCallback
RemoteCertificateValidationCallback

Delegado de RemoteCertificateValidationCallback responsable de la validación del certificado proporcionado por la parte remota.

Excepciones

No se puede leer en innerStream.

O bien

No se puede escribir en innerStream.

innerStream es null.

O bien

innerStream es igual a Null.

Ejemplos

En el ejemplo de código siguiente se crea y SslStream se 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;
}

Comentarios

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

El userCertificateValidationCallback argumento del certificateErrors delegado contiene los códigos de error de Windows devueltos por el canal Security Support Provider Interface (SSPI). El valor devuelto del método invocado por el delegado determina si la userCertificateValidationCallback 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 los puntos fuertes seleccionados son suficientes para la aplicación. Si no es así, el método debe volver false para evitar que se cree .SslStream

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

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

Nota

.NET almacena en caché las sesiones SSL a medida que se crean e intenta 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.

Nota

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

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

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

Inicializa una nueva instancia de la clase SslStream utilizando el objeto Stream, el delegado de validación de certificados y el delegado de selección de certificados especificados.

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

Parámetros

innerStream
Stream

Objeto Stream que la clase SslStream utiliza para enviar y recibir datos.

leaveInnerStreamOpen
Boolean

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

userCertificateValidationCallback
RemoteCertificateValidationCallback

Delegado de RemoteCertificateValidationCallback responsable de la validación del certificado proporcionado por la parte remota.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

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

Excepciones

No se puede leer en innerStream.

O bien

No se puede escribir en innerStream.

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

Comentarios

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

El userCertificateValidationCallback argumento del certificateErrors delegado contiene los códigos de error de Windows devueltos por el canal Security Support Provider Interface (SSPI). El valor devuelto del método invocado por el delegado determina si la userCertificateValidationCallback 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 los puntos fuertes seleccionados son suficientes para la aplicación. Si no es así, el método debe volver false para evitar que se cree .SslStream

El delegado es útil cuando la userCertificateSelectionCallback 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 es para la SslStream instancia que se construye.

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

Nota

.NET almacena en caché las sesiones SSL a medida que se crean e intenta 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

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

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

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

Inicializa una nueva instancia de la clase SslStream utilizando la clase Stream especificada.

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

Parámetros

innerStream
Stream

Objeto Stream que la clase SslStream utiliza para enviar y recibir datos.

leaveInnerStreamOpen
Boolean

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

userCertificateValidationCallback
RemoteCertificateValidationCallback

Delegado de RemoteCertificateValidationCallback responsable de la validación del certificado proporcionado por la parte remota.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

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

encryptionPolicy
EncryptionPolicy

Objeto EncryptionPolicy que se va a usar.

Excepciones

No se puede leer en innerStream.

O bien

No se puede escribir en innerStream.

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

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1