SslStream.RemoteCertificate Property

Definition

Gets the certificate used to authenticate the remote endpoint.

public:
 virtual property System::Security::Cryptography::X509Certificates::X509Certificate ^ RemoteCertificate { System::Security::Cryptography::X509Certificates::X509Certificate ^ get(); };
public virtual System.Security.Cryptography.X509Certificates.X509Certificate? RemoteCertificate { get; }
public virtual System.Security.Cryptography.X509Certificates.X509Certificate RemoteCertificate { get; }
member this.RemoteCertificate : System.Security.Cryptography.X509Certificates.X509Certificate
Public Overridable ReadOnly Property RemoteCertificate As X509Certificate

Property Value

An X509Certificate object that represents the certificate supplied for authentication or null if no certificate was supplied.

Exceptions

Authentication failed or has not occurred.

Examples

The following code example demonstrates displaying the certificate returned by this property.

   static void DisplayCertificateInformation( SslStream^ stream )
   {
      Console::WriteLine( L"Certificate revocation list checked: {0}", stream->CheckCertRevocationStatus );
      X509Certificate^ localCertificate = stream->LocalCertificate;
      if ( stream->LocalCertificate != nullptr )
      {
         Console::WriteLine( L"Local cert was issued to {0} and is valid from {1} until {2}.", 
             localCertificate->Subject, 
             localCertificate->GetEffectiveDateString(), 
             localCertificate->GetExpirationDateString() );
      }
      else
      {
         Console::WriteLine( L"Local certificate is null." );
      }

      X509Certificate^ remoteCertificate = stream->RemoteCertificate;
      if ( stream->RemoteCertificate != nullptr )
      {
         Console::WriteLine( L"Remote cert was issued to {0} and is valid from {1} until {2}.", 
            remoteCertificate->Subject, 
            remoteCertificate->GetEffectiveDateString(), 
            remoteCertificate->GetExpirationDateString() );
      }
      else
      {
         Console::WriteLine( L"Remote certificate is null." );
      }
   }


private:
static void DisplayCertificateInformation(SslStream stream)
{
    Console.WriteLine("Certificate revocation list checked: {0}", stream.CheckCertRevocationStatus);

    X509Certificate localCertificate = stream.LocalCertificate;
    if (stream.LocalCertificate != null)
    {
        Console.WriteLine("Local cert was issued to {0} and is valid from {1} until {2}.",
            localCertificate.Subject,
            localCertificate.GetEffectiveDateString(),
            localCertificate.GetExpirationDateString());
     } else
    {
        Console.WriteLine("Local certificate is null.");
    }
    // Display the properties of the client's certificate.
    X509Certificate remoteCertificate = stream.RemoteCertificate;
    if (stream.RemoteCertificate != null)
    {
    Console.WriteLine("Remote cert was issued to {0} and is valid from {1} until {2}.",
        remoteCertificate.Subject,
        remoteCertificate.GetEffectiveDateString(),
        remoteCertificate.GetExpirationDateString());
    } else
    {
        Console.WriteLine("Remote certificate is null.");
    }
}
Private Shared Sub DisplayCertificateInformation(stream As SslStream)
    Console.WriteLine("Certificate revocation list checked: {0}", stream.CheckCertRevocationStatus)
    Dim localCertificate As X509Certificate = stream.LocalCertificate

    If stream.LocalCertificate IsNot Nothing Then
        Console.WriteLine("Local cert was issued to {0} and is valid from {1} until {2}.", localCertificate.Subject, localCertificate.GetEffectiveDateString(), localCertificate.GetExpirationDateString())
    Else
        Console.WriteLine("Local certificate is null.")
    End If

    ' Display the properties of the client's certificate.
    Dim remoteCertificate As X509Certificate = stream.RemoteCertificate

    If stream.RemoteCertificate IsNot Nothing Then
        Console.WriteLine("Remote cert was issued to {0} and is valid from {1} until {2}.", remoteCertificate.Subject, remoteCertificate.GetEffectiveDateString(), remoteCertificate.GetExpirationDateString())
    Else
        Console.WriteLine("Remote certificate is null.")
    End If
End Sub

Remarks

If the property is accessed, the remote certificate will not be disposed when the SslStream instance is disposed. The caller of the property is responsible for disposing the returned X509Certificate object.

Applies to