SslStream Construtores

Definição

Inicializa uma nova instância da SslStream classe.

Sobrecargas

Name Description
SslStream(Stream)

Inicializa uma nova instância da SslStream classe usando o especificado Stream.

SslStream(Stream, Boolean)

Inicializa uma nova instância da SslStream classe usando o comportamento especificado Stream e de fecho do fluxo.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Inicializa uma nova instância da SslStream classe usando o delegado especificado Stream, comportamento de fecho de fluxo e validação de certificados.

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Inicializa uma nova instância da SslStream classe usando os especificados Stream, comportamento de fecho de fluxo, delegado de validação de certificados e delegado de seleção de certificado.

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

Inicializa uma nova instância da SslStream classe usando o especificado Stream.

Observações

Para evitar SslStream que feche o fluxo que fornece, use o SslStream construtor.

SslStream(Stream)

Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs

Inicializa uma nova instância da SslStream classe usando o 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

Um Stream objeto usado pelo SslStream para enviar e receber dados.

Exceções

innerStream não é legível.

-ou-

innerStream não é escrita.

innerStream é null.

-ou-

innerStream é igual a Null.

Observações

Se um valor não for especificado no ficheiro de configuração para a encryptionpolicy, o EncryptionPolicy valor por defeito é EncryptionPolicy.RequireEncryption para a SslStream instância que é construída.

A utilização da cifra Null é necessária quando a política de encriptação está definida para EncryptionPolicy.NoEncryption.

Aplica-se a

SslStream(Stream, Boolean)

Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs

Inicializa uma nova instância da SslStream classe usando o comportamento especificado Stream e de fecho do fluxo.

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

Um Stream objeto usado pelo SslStream para enviar e receber dados.

leaveInnerStreamOpen
Boolean

Um valor booleano que indica o comportamento de fecho do Stream objeto usado pelo SslStream para enviar e receber dados. Este parâmetro indica se o fluxo interior fica aberto.

Exceções

innerStream não é legível.

-ou-

innerStream não é escrita.

innerStream é null.

-ou-

innerStream é igual a Null.

Exemplos

O exemplo de código seguinte demonstra chamar este construtor.

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

Observações

Quando especificas true para o leaveStreamOpen parâmetro, fechar o SslStream não tem efeito no innerStream fluxo; tens de fechar innerStream explicitamente quando já não precisas dele.

Se um valor não for especificado no ficheiro de configuração para a encryptionpolicy, o EncryptionPolicy valor por defeito é EncryptionPolicy.RequireEncryption para a SslStream instância que é construída.

A utilização da cifra Null é necessária quando a política de encriptação está definida para EncryptionPolicy.NoEncryption.

Aplica-se a

SslStream(Stream, Boolean, RemoteCertificateValidationCallback)

Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs

Inicializa uma nova instância da SslStream classe usando o delegado especificado Stream, comportamento de fecho de fluxo e validação de certificados.

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

Um Stream objeto usado pelo SslStream para enviar e receber dados.

leaveInnerStreamOpen
Boolean

Um valor booleano que indica o comportamento de fecho do Stream objeto usado pelo SslStream para enviar e receber dados. Este parâmetro indica se o fluxo interior fica aberto.

userCertificateValidationCallback
RemoteCertificateValidationCallback

Um RemoteCertificateValidationCallback delegado responsável por validar o certificado fornecido pela parte remota.

Exceções

innerStream não é legível.

-ou-

innerStream não é escrita.

innerStream é null.

-ou-

innerStream é igual a Null.

Exemplos

O exemplo de código seguinte cria uma SslStream e inicia a parte cliente da autenticação.

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

Observações

Quando especificas true para o leaveStreamOpen parâmetro, fechar o SslStream não tem efeito no innerStream fluxo; tens de fechar innerStream explicitamente quando já não precisas dele.

O argumento > do delegado userCertificateValidationCallback delegado determina se a autenticação tem sucesso.

O protocolo de segurança e os algoritmos criptográficos já estão selecionados quando o userCertificateValidationCallback método do delegado é invocado. Pode usar o método para determinar se os algoritmos e forças criptográficas selecionados são suficientes para a sua aplicação. Se não, o método deve regressar false para evitar a criação SslStream .

Se um valor não for especificado no ficheiro de configuração para a encryptionpolicy, o EncryptionPolicy valor por defeito é EncryptionPolicy.RequireEncryption para a SslStream instância que é construída.

A utilização da cifra Null é necessária quando a política de encriptação está definida para EncryptionPolicy.NoEncryption.

Note

.NET armazena em cache as sessões SSL à medida que são criadas e tenta reutilizar uma sessão em cache para pedidos subsequentes, se possível. Ao tentar reutilizar uma sessão SSL, o Framework usa o primeiro elemento do X509Certificate2Collection fornecido durante a autenticação (se existir), ou tenta reutilizar uma sessão anónima se a coleção de certificados estiver vazia.

Note

Os certificados de cliente não são suportados no protocolo SSL versão 2.

Aplica-se a

SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)

Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.cs

Inicializa uma nova instância da SslStream classe usando os especificados Stream, comportamento de fecho de fluxo, delegado de validação de certificados e delegado de seleção de certificado.

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

Um Stream objeto usado pelo SslStream para enviar e receber dados.

leaveInnerStreamOpen
Boolean

Um valor booleano que indica o comportamento de fecho do Stream objeto usado pelo SslStream para enviar e receber dados. Este parâmetro indica se o fluxo interior fica aberto.

userCertificateValidationCallback
RemoteCertificateValidationCallback

Um RemoteCertificateValidationCallback delegado responsável por validar o certificado fornecido pela parte remota.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

Um LocalCertificateSelectionCallback delegado responsável por selecionar o certificado utilizado para autenticação.

Exceções

innerStream não é legível.

-ou-

innerStream não é escrita.

innerStream é null.

-ou-

innerStream é igual a Null.

Exemplos

O exemplo de código seguinte demonstra chamar este construtor. Este exemplo faz parte de um exemplo mais amplo fornecido à SslStream turma.

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

Observações

Quando especificas true para o leaveStreamOpen parâmetro, fechar o SslStream não tem efeito no innerStream fluxo; tens de fechar innerStream explicitamente quando já não precisas dele.

O argumento > do delegado userCertificateValidationCallback delegado determina se a autenticação tem sucesso.

O protocolo de segurança e os algoritmos criptográficos já estão selecionados quando o userCertificateValidationCallback método do delegado é invocado. Pode usar o método para determinar se os algoritmos e forças criptográficas selecionados são suficientes para a sua aplicação. Se não, o método deve regressar false para evitar a criação SslStream .

O userCertificateSelectionCallback delegado é útil quando a sua aplicação tem múltiplos certificados e tem de escolher dinamicamente um certificado. Os certificados na memória "MY" são passados para o método invocado pelo delegado.

Se um valor não for especificado no ficheiro de configuração para a encryptionpolicy, o EncryptionPolicy valor por defeito é EncryptionPolicy.RequireEncryption para a SslStream instância que é construída.

A utilização da cifra Null é necessária quando a política de encriptação está definida para EncryptionPolicy.NoEncryption.

Note

.NET armazena em cache as sessões SSL à medida que são criadas e tenta reutilizar uma sessão em cache para pedidos subsequentes, se possível. Ao tentar reutilizar uma sessão SSL, o Framework usa o primeiro elemento do X509Certificate2Collection fornecido durante a autenticação (se existir), ou tenta reutilizar uma sessão anónima se a coleção de certificados estiver vazia.

Aplica-se a

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

Origem:
SslStream.cs
Origem:
SslStream.cs
Origem:
SslStream.IO.cs
Origem:
SslStream.cs
Origem:
SslStream.cs

Inicializa uma nova instância da SslStream classe usando o 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

Um Stream objeto usado pelo SslStream para enviar e receber dados.

leaveInnerStreamOpen
Boolean

Um valor booleano que indica o comportamento de fecho do Stream objeto usado pelo SslStream para enviar e receber dados. Este parâmetro indica se o fluxo interior fica aberto.

userCertificateValidationCallback
RemoteCertificateValidationCallback

Um RemoteCertificateValidationCallback delegado responsável por validar o certificado fornecido pela parte remota.

userCertificateSelectionCallback
LocalCertificateSelectionCallback

Um LocalCertificateSelectionCallback delegado responsável por selecionar o certificado utilizado para autenticação.

encryptionPolicy
EncryptionPolicy

O EncryptionPolicy para usar.

Exceções

innerStream não é legível.

-ou-

innerStream não é escrita.

-ou-

encryptionPolicy não é válido.

innerStream é null.

-ou-

innerStream é igual a Null.

Observações

A utilização da cifra nula é necessária quando o encryptionPolicy parâmetro está definido como EncryptionPolicy.NoEncryption.

Aplica-se a