X509FindType 열거형

정의

Find(X509FindType, Object, Boolean) 메서드를 사용하여 검색되는 값의 형식을 지정합니다.

public enum class X509FindType
public enum X509FindType
type X509FindType = 
Public Enum X509FindType
상속
X509FindType

필드

FindByApplicationPolicy 10

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 인증서의 개체 식별자(OID 또는 Oid)나 애플리케이션 정책 이름을 나타내는 문자열이어야 합니다. 예를 들어, "Encrypting File System" 또는 "1.3.6.1.4.1.311.10.3.4"를 사용할 수 있습니다. 지역화할 애플리케이션의 경우 이름이 지역화되므로 OID 값을 사용해야 합니다.

FindByCertificatePolicy 11

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 인증서 정책의 개체 식별자(OID, 또는 Oid)나 이름을 나타내는 문자열이어야 합니다. 가장 좋은 방법은 "1.3.6.1.4.1.311.10.3.4"와 같이 OID를 사용하는 것입니다. 지역화할 애플리케이션의 경우 이름이 지역화되므로 OID를 사용해야 합니다.

FindByExtension 12

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 찾으려는 확장명을 설명하는 문자열이어야 합니다. OID(개체 식별자)는 Find(X509FindType, Object, Boolean) 메서드를 사용하여 해당 OID 값이 일치하는 확장이 있는 인증서를 모두 검색하려는 경우에 가장 일반적으로 사용됩니다.

FindByIssuerDistinguishedName 4

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 인증서의 발급자 고유 이름을 나타내는 문자열이어야 합니다. 이 경우 FindByIssuerName 열거형 값으로 제공된 것보다 검색이 더 구체적입니다. FindByIssuerDistinguishedName 값을 사용하면 Find(X509FindType, Object, Boolean) 메서드에서 전체 고유 이름에 대해 대/소문자를 구분하지 않는 문자열 비교를 수행합니다. 발급자 이름을 기준으로 검색하면 정확도가 떨어집니다.

FindByIssuerName 3

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 인증서의 발급자 이름을 나타내는 문자열이어야 합니다. 이 경우 FindByIssuerDistinguishedName 열거형 값으로 제공된 것보다 검색이 덜 구체적입니다. FindByIssuerName 값을 사용하면 Find(X509FindType, Object, Boolean) 메서드에서 제공된 값으로 대/소문자를 구분하지 않는 문자열 비교를 수행합니다. 예를 들어, Find(X509FindType, Object, Boolean) 메서드에 "MyCA"를 전달하면 다른 발급자 값에 상관없이 해당 문자열이 포함된 발급자 이름의 모든 인증서를 찾습니다.

FindByKeyUsage 13

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 요청된 키 용도가 모두 포함된 비트 마스크를 나타내는 정수이거나 키 용도를 나타내는 문자열이어야 합니다. 문자열 값의 경우 키 용도를 한 번에 하나만 지정할 수 있지만 캐스케이딩 시퀀스에 Find(X509FindType, Object, Boolean) 메서드를 사용하면 요청된 용도의 교집합을 구할 수 있습니다. 예를 들어, findValue 매개 변수를 "KeyEncipherment"나 정수로 설정할 수 있습니다. 0x30은 "KeyEncipherment" 및 "DataEncipherment"를 나타냅니다. X509KeyUsageFlags 열거형의 값을 사용할 수도 있습니다.

FindBySerialNumber 5

Find(X509FindType, Object, Boolean) 메서드의 findValue 매개 변수는 인증서 대화 상자에 표시된 인증서 일련 번호를 나타내는 공백 없는 문자열 또는 GetSerialNumberString() 메서드에서 반환한 문자열이어야 합니다.

FindBySubjectDistinguishedName 2

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 인증서의 구별된 주체 이름을 나타내는 문자열이어야 합니다. 이 경우 FindBySubjectName 열거형 값으로 제공된 것보다 검색이 더 구체적입니다. FindBySubjectDistinguishedName 값을 사용하면 Find(X509FindType, Object, Boolean) 메서드에서 전체 고유 이름에 대해 대/소문자를 구분하지 않는 문자열 비교를 수행합니다. 주체 이름을 기준으로 검색하면 정확도가 떨어집니다.

FindBySubjectKeyIdentifier 14

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 "F3E815D45E83B8477B9284113C64EF208E897112" 등과 같이 UI에 표시되는 16진수의 주체 키 식별자를 나타내는 문자열이어야 합니다.

FindBySubjectName 1

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 인증서의 주체 이름을 나타내는 문자열이어야 합니다. 이 경우 FindBySubjectDistinguishedName 열거형 값으로 제공된 것보다 검색이 덜 구체적입니다. FindBySubjectName 값을 사용하면 Find(X509FindType, Object, Boolean) 메서드에서 제공된 값으로 대/소문자를 구분하지 않는 문자열 비교를 수행합니다. 예를 들어, Find(X509FindType, Object, Boolean) 메서드에 "MyCert"를 전달하면 다른 주체 값에 상관없이 해당 문자열이 포함된 주체 이름의 모든 인증서를 찾습니다. 고유 이름을 기준으로 검색하면 정확도가 향상됩니다.

FindByTemplateName 9

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 "ClientAuth"와 같이 인증서의 템플릿 이름을 나타내는 문자열이어야 합니다. 템플릿 이름은 인증서 용도를 지정하는 X509 버전 3 확장입니다.

FindByThumbprint 0

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 인증서의 지문을 나타내는 문자열이어야 합니다.

FindByTimeExpired 8

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 현지 시간의 DateTime 값이어야 합니다. 예를 들어, Find(X509FindType, Object, Boolean)에 대한 FindByTimeExpired 연산의 결과에서 연도 마지막 날의 Find(X509FindType, Object, Boolean)에 대한 Now 연산의 결과를 제거하여 연말까지 유효한 모든 인증서를 찾을 수 있습니다.

FindByTimeNotYetValid 7

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 현지 시간의 DateTime 값이어야 합니다. 값이 미래의 값일 필요는 없습니다. 예를 들어, FindByTimeNotYetValid를 사용하여 연도 마지막 날의 Find(X509FindType, Object, Boolean)에 대한 FindByTimeNotYetValid 연산의 결과와 Find(X509FindType, Object, Boolean)FindByTimeValid에 대한 Now 연산의 결과가 교차되는 부분을 가져와서 올해 유효하게 될 인증서를 찾을 수 있습니다.

FindByTimeValid 6

Find(X509FindType, Object, Boolean) 메서드에 대한 findValue 매개 변수는 현지 시간의 DateTime 값이어야 합니다. Now를 사용하여 현재 유효한 모든 인증서를 찾을 수 있습니다.

예제

다음은 현재 사용자의 개인 인증서 저장소를 열고, 유효한 인증서만 찾고, 사용자가 인증서를 선택할 수 있도록 허용한 다음, 인증서 정보를 콘솔에 쓰는 예제입니다. 출력은 선택한 인증서에 따라 달라집니다.

#using <System.dll>
#using <System.Security.dll>

using namespace System;
using namespace System::Security::Cryptography;
using namespace System::Security::Permissions;
using namespace System::IO;
using namespace System::Security::Cryptography::X509Certificates;
int main()
{
   try
   {
      X509Store ^ store = gcnew X509Store( "MY",StoreLocation::CurrentUser );
      store->Open( static_cast<OpenFlags>(OpenFlags::ReadOnly | OpenFlags::OpenExistingOnly) );
      X509Certificate2Collection ^ collection = dynamic_cast<X509Certificate2Collection^>(store->Certificates);
      X509Certificate2Collection ^ fcollection = dynamic_cast<X509Certificate2Collection^>(collection->Find( X509FindType::FindByTimeValid, DateTime::Now, false ));
      X509Certificate2Collection ^ scollection = X509Certificate2UI::SelectFromCollection(fcollection, "Test Certificate Select","Select a certificate from the following list to get information on that certificate",X509SelectionFlag::MultiSelection);
      Console::WriteLine( "Number of certificates: {0}{1}", scollection->Count, Environment::NewLine );
      System::Collections::IEnumerator^ myEnum = scollection->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         X509Certificate2 ^ x509 = safe_cast<X509Certificate2 ^>(myEnum->Current);
         array<Byte>^rawdata = x509->RawData;
         Console::WriteLine( "Content Type: {0}{1}", X509Certificate2::GetCertContentType( rawdata ), Environment::NewLine );
         Console::WriteLine( "Friendly Name: {0}{1}", x509->FriendlyName, Environment::NewLine );
         Console::WriteLine( "Certificate Verified?: {0}{1}", x509->Verify(), Environment::NewLine );
         Console::WriteLine( "Simple Name: {0}{1}", x509->GetNameInfo( X509NameType::SimpleName, true ), Environment::NewLine );
         Console::WriteLine( "Signature Algorithm: {0}{1}", x509->SignatureAlgorithm->FriendlyName, Environment::NewLine );
         Console::WriteLine( "Private Key: {0}{1}", x509->PrivateKey->ToXmlString( false ), Environment::NewLine );
         Console::WriteLine( "Public Key: {0}{1}", x509->PublicKey->Key->ToXmlString( false ), Environment::NewLine );
         Console::WriteLine( "Certificate Archived?: {0}{1}", x509->Archived, Environment::NewLine );
         Console::WriteLine( "Length of Raw Data: {0}{1}", x509->RawData->Length, Environment::NewLine );
         x509->Reset();
      }
      store->Close();
   }
   catch ( CryptographicException^ ) 
   {
      Console::WriteLine( "Information could not be written out for this certificate." );
   }

}
using System;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.IO;
using System.Security.Cryptography.X509Certificates;

class CertSelect
{
    static void Main()
    {
        X509Store store = new X509Store("MY",StoreLocation.CurrentUser);
        store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

        X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
        X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid,DateTime.Now,false);
        X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select","Select a certificate from the following list to get information on that certificate",X509SelectionFlag.MultiSelection);
        Console.WriteLine("Number of certificates: {0}{1}",scollection.Count,Environment.NewLine);

        foreach (X509Certificate2 x509 in scollection)
        {
            try
            {
                byte[] rawdata = x509.RawData;
                Console.WriteLine("Content Type: {0}{1}",X509Certificate2.GetCertContentType(rawdata),Environment.NewLine);
                Console.WriteLine("Friendly Name: {0}{1}",x509.FriendlyName,Environment.NewLine);
                Console.WriteLine("Certificate Verified?: {0}{1}",x509.Verify(),Environment.NewLine);
                Console.WriteLine("Simple Name: {0}{1}",x509.GetNameInfo(X509NameType.SimpleName,true),Environment.NewLine);
                Console.WriteLine("Signature Algorithm: {0}{1}",x509.SignatureAlgorithm.FriendlyName,Environment.NewLine);
                Console.WriteLine("Public Key: {0}{1}",x509.PublicKey.Key.ToXmlString(false),Environment.NewLine);
                Console.WriteLine("Certificate Archived?: {0}{1}",x509.Archived,Environment.NewLine);
                Console.WriteLine("Length of Raw Data: {0}{1}",x509.RawData.Length,Environment.NewLine);
                X509Certificate2UI.DisplayCertificate(x509);
                x509.Reset();
            }
            catch (CryptographicException)
            {
                Console.WriteLine("Information could not be written out for this certificate.");
            }
        }
        store.Close();
    }
}
Imports System.Security.Cryptography
Imports System.Security.Permissions
Imports System.IO
Imports System.Security.Cryptography.X509Certificates

Class CertSelect

    Shared Sub Main()

        Dim store As New X509Store("MY", StoreLocation.CurrentUser)
        store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly)

        Dim collection As X509Certificate2Collection = CType(store.Certificates, X509Certificate2Collection)
        Dim fcollection As X509Certificate2Collection = CType(collection.Find(X509FindType.FindByTimeValid, DateTime.Now, False), X509Certificate2Collection)
        Dim scollection As X509Certificate2Collection = X509Certificate2UI.SelectFromCollection(fcollection, "Test Certificate Select", "Select a certificate from the following list to get information on that certificate", X509SelectionFlag.MultiSelection)
        Console.WriteLine("Number of certificates: {0}{1}", scollection.Count, Environment.NewLine)
         
        For Each x509 As X509Certificate2 In scollection
            Try
                Dim rawdata As Byte() = x509.RawData
                Console.WriteLine("Content Type: {0}{1}", X509Certificate2.GetCertContentType(rawdata), Environment.NewLine)
                Console.WriteLine("Friendly Name: {0}{1}", x509.FriendlyName, Environment.NewLine)
                Console.WriteLine("Certificate Verified?: {0}{1}", x509.Verify(), Environment.NewLine)
                Console.WriteLine("Simple Name: {0}{1}", x509.GetNameInfo(X509NameType.SimpleName, True), Environment.NewLine)
                Console.WriteLine("Signature Algorithm: {0}{1}", x509.SignatureAlgorithm.FriendlyName, Environment.NewLine)
                Console.WriteLine("Public Key: {0}{1}", x509.PublicKey.Key.ToXmlString(False), Environment.NewLine)
                Console.WriteLine("Certificate Archived?: {0}{1}", x509.Archived, Environment.NewLine)
                Console.WriteLine("Length of Raw Data: {0}{1}", x509.RawData.Length, Environment.NewLine)
                X509Certificate2UI.DisplayCertificate(x509)
                x509.Reset()         
             Catch cExcept As CryptographicException
                 Console.WriteLine("Information could not be written out for this certificate.")
             End Try
        Next x509

        store.Close()
    End Sub
End Class

설명

X509FindType 는 메서드에 대한 매개 변수에 findValue 제공된 값의 형식을 식별합니다 Find . 주체 이름, 지문, 일련 번호, 유효한 날짜 범위 또는 기타 값으로 컬렉션을 검색 X509Certificate2 하는 데 사용할 X509FindType 수 있습니다.

값 형식의 FindByTime 조합을 사용하여 지정된 시간 범위에서 유효한 인증서를 찾을 수 있습니다. 지정된 시간 동안 FindByTimeValid, FindByTimeNotYetValid 및 FindByTimeExpired를 사용하여 반환된 인증서의 합은 쿼리된 컬렉션의 모든 인증서를 나타냅니다.

적용 대상