SslStream 생성자
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
SslStream 클래스의 새 인스턴스를 초기화합니다.
오버로드
SslStream(Stream) | |
SslStream(Stream, Boolean) | |
SslStream(Stream, Boolean, RemoteCertificateValidationCallback) |
지정된 SslStream, 스트림 닫기 동작 및 인증서 유효성 검사 대리자를 사용하여 Stream 클래스의 새 인스턴스를 초기화합니다. |
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback) |
지정된 SslStream, 스트림 닫기 동작, 인증서 유효성 검사 대리자 및 인증서 선택 대리자를 사용하여 Stream 클래스의 새 인스턴스를 초기화합니다. |
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy) |
설명
에서 SslStream 제공하는 스트림을 닫지 않도록 하려면 생성자를 SslStream 사용합니다.
SslStream(Stream)
- Source:
- SslStream.cs
- Source:
- SslStream.cs
- Source:
- 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)
매개 변수
예외
설명
암호화에 EncryptionPolicy 대한 구성 파일에 값이 지정되지 않은 경우 생성되는 instance 대한 SslStream 기본값 EncryptionPolicy.RequireEncryption 은 입니다.
암호화 정책으로 설정 된 경우 Null 암호화를 사용 하 여 반드시 EncryptionPolicy.NoEncryption입니다.
적용 대상
SslStream(Stream, Boolean)
- Source:
- SslStream.cs
- Source:
- SslStream.cs
- Source:
- 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)
매개 변수
- leaveInnerStreamOpen
- Boolean
데이터를 보내고 받기 위해 Stream에서 사용하는 SslStream 개체의 닫기 동작을 나타내는 부울 값입니다. 이 매개 변수는 내부 스트림이 계속 열려 있는지 여부를 나타냅니다.
예외
예제
다음 코드 예제에서는이 생성자를 호출 하는 방법을 보여 줍니다.
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
설명
매개 변수를 지정할 true
때 를 닫 SslStream 으면 스트림에 innerStream
영향을 주지 않습니다. 더 이상 필요하지 않을 때 명시적으로 닫 innerStream
아야 leaveStreamOpen
합니다.
암호화에 EncryptionPolicy 대한 구성 파일에 값이 지정되지 않은 경우 생성되는 instance 대한 SslStream 기본값 EncryptionPolicy.RequireEncryption 은 입니다.
암호화 정책으로 설정 된 경우 Null 암호화를 사용 하 여 반드시 EncryptionPolicy.NoEncryption입니다.
적용 대상
SslStream(Stream, Boolean, RemoteCertificateValidationCallback)
- Source:
- SslStream.cs
- Source:
- SslStream.cs
- Source:
- 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)
매개 변수
- leaveInnerStreamOpen
- Boolean
데이터를 보내고 받기 위해 Stream에서 사용하는 SslStream 개체의 닫기 동작을 나타내는 부울 값입니다. 이 매개 변수는 내부 스트림이 계속 열려 있는지 여부를 나타냅니다.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
원격 대상에서 제공한 인증서의 유효성을 검사하는 RemoteCertificateValidationCallback 대리자입니다.
예외
예제
다음 코드 예제에서는 를 만들고 SslStream 인증의 클라이언트 부분을 시작합니다.
// 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
설명
매개 변수를 지정할 true
때 를 닫 SslStream 으면 스트림에 innerStream
영향을 주지 않습니다. 더 이상 필요하지 않을 때 명시적으로 닫 innerStream
아야 leaveStreamOpen
합니다.
대리자의 certificateErrors
인수에는 userCertificateValidationCallback
채널 SSPI(보안 지원 공급자 인터페이스)에서 반환된 모든 Windows 오류 코드가 포함됩니다. 대리자에서 호출하는 메서드의 반환 값은 userCertificateValidationCallback
인증 성공 여부를 결정합니다.
대리자의 메서드가 호출될 때 userCertificateValidationCallback
보안 프로토콜 및 암호화 알고리즘이 이미 선택되어 있습니다. 선택한 암호화 알고리즘 및 길이의 애플리케이션에 충분 한지 확인 하려면 메서드를 사용할 수 있습니다. 그렇지 않은 경우 메서드는 를 만들지 못하도록 SslStream 를 반환 false
해야 합니다.
암호화에 EncryptionPolicy 대한 구성 파일에 값이 지정되지 않은 경우 생성되는 instance 대한 SslStream 기본값 EncryptionPolicy.RequireEncryption 은 입니다.
암호화 정책으로 설정 된 경우 Null 암호화를 사용 하 여 반드시 EncryptionPolicy.NoEncryption입니다.
참고
.NET은 SSL 세션이 만들어질 때 캐시하고 가능한 경우 후속 요청에 캐시된 세션을 다시 사용하려고 시도합니다. SSL 세션을 다시 사용하려고 할 때 프레임워크는 인증 중에 제공된 의 X509Certificate2Collection 첫 번째 요소를 사용하거나(있는 경우) 인증서 컬렉션이 비어 있는 경우 익명 세션을 다시 사용하려고 합니다.
참고
클라이언트 인증서는 SSL 버전 2 프로토콜에서 지원되지 않습니다.
적용 대상
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback)
- Source:
- SslStream.cs
- Source:
- SslStream.cs
- Source:
- 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)
매개 변수
- leaveInnerStreamOpen
- Boolean
데이터를 보내고 받기 위해 Stream에서 사용하는 SslStream 개체의 닫기 동작을 나타내는 부울 값입니다. 이 매개 변수는 내부 스트림이 계속 열려 있는지 여부를 나타냅니다.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
원격 대상에서 제공한 인증서의 유효성을 검사하는 RemoteCertificateValidationCallback 대리자입니다.
- userCertificateSelectionCallback
- LocalCertificateSelectionCallback
인증에 사용할 인증서를 선택하는 LocalCertificateSelectionCallback 대리자입니다.
예외
예제
다음 코드 예제에서는이 생성자를 호출 하는 방법을 보여 줍니다. 이 예제는에 대해 제공 된 큰 예제의 일부는 SslStream 클래스입니다.
// 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))
설명
매개 변수를 지정할 true
때 를 닫 SslStream 으면 스트림에 innerStream
영향을 주지 않습니다. 더 이상 필요하지 않을 때 명시적으로 닫 innerStream
아야 leaveStreamOpen
합니다.
대리자의 certificateErrors
인수에는 userCertificateValidationCallback
채널 SSPI(보안 지원 공급자 인터페이스)에서 반환된 모든 Windows 오류 코드가 포함됩니다. 대리자에서 호출하는 메서드의 반환 값은 userCertificateValidationCallback
인증 성공 여부를 결정합니다.
대리자의 메서드가 호출될 때 userCertificateValidationCallback
보안 프로토콜 및 암호화 알고리즘이 이미 선택되어 있습니다. 선택한 암호화 알고리즘 및 길이의 애플리케이션에 충분 한지 확인 하려면 메서드를 사용할 수 있습니다. 그렇지 않은 경우 메서드는 를 만들지 못하도록 SslStream 를 반환 false
해야 합니다.
userCertificateSelectionCallback
대리자는 애플리케이션 인증서가 여러 개 및 인증서를 동적으로 선택 해야 하는 경우에 유용 합니다. "MY" 저장소의 인증서는 대리자에서 호출하는 메서드에 전달됩니다.
암호화에 EncryptionPolicy 대한 구성 파일에 값이 지정되지 않은 경우 생성되는 instance 대한 SslStream 기본값 EncryptionPolicy.RequireEncryption 은 입니다.
암호화 정책으로 설정 된 경우 Null 암호화를 사용 하 여 반드시 EncryptionPolicy.NoEncryption입니다.
참고
.NET은 SSL 세션이 만들어질 때 캐시하고 가능한 경우 후속 요청에 캐시된 세션을 다시 사용하려고 시도합니다. SSL 세션을 다시 사용하려고 할 때 프레임워크는 인증 중에 제공된 의 X509Certificate2Collection 첫 번째 요소를 사용하거나(있는 경우) 인증서 컬렉션이 비어 있는 경우 익명 세션을 다시 사용하려고 합니다.
적용 대상
SslStream(Stream, Boolean, RemoteCertificateValidationCallback, LocalCertificateSelectionCallback, EncryptionPolicy)
- Source:
- SslStream.IO.cs
- Source:
- SslStream.cs
- Source:
- 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)
매개 변수
- leaveInnerStreamOpen
- Boolean
데이터를 보내고 받기 위해 Stream에서 사용하는 SslStream 개체의 닫기 동작을 나타내는 부울 값입니다. 이 매개 변수는 내부 스트림이 계속 열려 있는지 여부를 나타냅니다.
- userCertificateValidationCallback
- RemoteCertificateValidationCallback
원격 대상에서 제공한 인증서의 유효성을 검사하는 RemoteCertificateValidationCallback 대리자입니다.
- userCertificateSelectionCallback
- LocalCertificateSelectionCallback
인증에 사용할 인증서를 선택하는 LocalCertificateSelectionCallback 대리자입니다.
- encryptionPolicy
- EncryptionPolicy
사용할 EncryptionPolicy입니다.
예외
설명
매개 변수가 로 설정된 경우 Null 암호화를 encryptionPolicy
사용해야 합니다 EncryptionPolicy.NoEncryption.
적용 대상
.NET