CertificateSubject Property  

Returns information about the organization to which the server certificate was issued.




The CertificateSubject property returns a string that contains information about the organization that the server certificate was issued for. The string value is a comma separated list of tagged name and value pairs. In the nomenclature of the X.500 standard, each of these pairs are called a relative distinguished name (RDN), and when concatenated together, forms the subject's distinguished name (DN). For example:

C=US, O="RSA Data Security, Inc.", OU=Secure Server Certification Authority

To obtain a specific value, such as the name of the subject's company or country, the application must parse the string returned by this property. Some of the common tokens used in the distinguished name are:

Name Description
C The ISO standard two character country code
S The name of the state or province
L The name of the city or locality
O The name of the company or organization
OU The name of the department or organizational unit
CN The common name; with X.509 certificates, this is the domain name of the site the certificate was issued for

This property will return an empty string if a secure connection has not been established with the server.

Data Type



The following example demonstrates how to extract the value of a relative distinguished name token:

Function GetCertNameValue(ByVal strValue As String, ByVal strFieldName As String) As String
     Dim strFieldValue As String
     Dim cchValue As Integer, cchFieldName As Integer
     Dim nOffset As Integer

     GetCertNameValue = ""
     cchValue = Len(strValue)
     cchFieldName = Len(strFieldName)

     If cchValue = 0 Or cchFieldName = 0 Then
          Exit Function
     End If

     nOffset = InStr(strValue, strFieldName & "=")

     If nOffset > 0 Then

          ' If the field name was found in the string, then
          ' remove everything to the left of the token from
          ' the string

          strFieldValue = Right(strValue, cchValue - (nOffset + cchFieldName))

          ' If the value is quoted, then strip off the leading
          ' quote and look for the ending quote in the string;
          ' otherwise look for the comma that marks the end of
          ' the field name/value pair

          If Left(strFieldValue, 1) = Chr(34) Then
               strFieldValue = Right(strFieldValue, Len(strFieldValue) - 1)
               nOffset = InStr(strFieldValue, Chr(34))
               nOffset = InStr(strFieldValue, ",")
          End If

          ' If the offset is 0, then the name/value pair is
          ' the last token in the string; otherwise, remove
          ' everything to the right of that position

          If nOffset > 0 Then
               strFieldValue = Left(strFieldValue, nOffset - 1)
          End If

          GetCertNameValue = strFieldValue
     End If

End Function

This function could then be used to return the domain name that the server certificate was issued for:

Dim strSubject As String
Dim strDomainName As String

strSubject = FileTransfer1.CertificateSubject
If Len(strSubject) = 0 Then
     MsgBox "A secure connection has not been established"
     strDomainName = GetCertNameValue(strSubject, "CN")
     MsgBox "This certificate was issued for " & strDomainName
End If

See Also

CertificateExpires Property, CertificateIssued Property, CertificateIssuer Property, CertificateStatus Property, Secure Property