X509Certificate2.NotBefore Property
.NET Framework 4
Gets the date in local time on which a certificate becomes valid.
Assembly: System (in System.dll)
| Exception | Condition |
|---|---|
| CryptographicException |
The certificate is unreadable. |
The following code example creates a command-line executable that takes a certificate file as an argument and prints various certificate properties to the console.
using System; using System.Security.Cryptography; using System.Security.Permissions; using System.IO; using System.Security.Cryptography.X509Certificates; class CertInfo { //Reads a file. internal static byte[] ReadFile (string fileName) { FileStream f = new FileStream(fileName, FileMode.Open, FileAccess.Read); int size = (int)f.Length; byte[] data = new byte[size]; size = f.Read(data, 0, size); f.Close(); return data; } //Main method begins here. static void Main(string[] args) { //Test for correct number of arguments. if (args.Length < 1) { Console.WriteLine("Usage: CertInfo <filename>"); return; } try { X509Certificate2 x509 = new X509Certificate2(); //Create X509Certificate2 object from .cer file. byte[] rawData = ReadFile(args[0]); x509.Import(rawData); //Print to console information contained in the certificate. Console.WriteLine("{0}Subject: {1}{0}", Environment.NewLine,x509.Subject); Console.WriteLine("{0}Issuer: {1}{0}", Environment.NewLine,x509.Issuer); Console.WriteLine("{0}Version: {1}{0}", Environment.NewLine,x509.Version); Console.WriteLine("{0}Valid Date: {1}{0}", Environment.NewLine,x509.NotBefore); Console.WriteLine("{0}Expiry Date: {1}{0}", Environment.NewLine,x509.NotAfter); Console.WriteLine("{0}Thumbprint: {1}{0}", Environment.NewLine,x509.Thumbprint); Console.WriteLine("{0}Serial Number: {1}{0}", Environment.NewLine,x509.SerialNumber); Console.WriteLine("{0}Friendly Name: {1}{0}", Environment.NewLine,x509.PublicKey.Oid.FriendlyName); Console.WriteLine("{0}Public Key Format: {1}{0}", Environment.NewLine,x509.PublicKey.EncodedKeyValue.Format(true)); Console.WriteLine("{0}Raw Data Length: {1}{0}", Environment.NewLine,x509.RawData.Length); Console.WriteLine("{0}Certificate to string: {1}{0}", Environment.NewLine,x509.ToString(true)); Console.WriteLine("{0}Certificate to XML String: {1}{0}", Environment.NewLine,x509.PublicKey.Key.ToXmlString(false)); //Add the certificate to a X509Store. X509Store store = new X509Store(); store.Open(OpenFlags.MaxAllowed); store.Add(x509); store.Close(); } catch (DirectoryNotFoundException) { Console.WriteLine("Error: The directory specified could not be found."); } catch (IOException) { Console.WriteLine("Error: A file in the directory could not be accessed."); } catch (NullReferenceException) { Console.WriteLine("File must be a .cer file. Program does not have access to that type of file."); } } }
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
DaylightSaving problem with NotBefore and NotAfter
I've found a problem v these two (NotBefore and NotAfter) properties. If I have looked at them in certfificate information window (double click on cer file in windows), values there and values through loading the certificate to .NET X509Certificate2 object were different, if NotBefore was in different DayLightSaving than current time. Got me? Has anyone else noticed this? I have windows 7 and .NET framework 4.0.
- 5/21/2012
- GregorM