Decrypt my World

Cryptography, Security, Debugging and more!

How to export issued certificates from a CA programatically (C#)

How to export issued certificates from a CA programatically (C#)

Rate This
  • Comments 1

Hi all,

 

The following sample is a simplification of How to get info from client certificates issued by a CA (C#), and gets all the issued certs in the CA database and copies them to a folder:

 

using System;
using System.Windows.Forms;
using System.IO;
using CERTADMINLib;



// Parameters
string strServer = "myserver";
string strCAName = "myserver-CA";
string strPathForCerts = "c:\\test\\";

// Constants
const int CV_OUT_BASE64HEADER = 0;
const int CV_OUT_BINARY = 2;

// Variables
CERTADMINLib.CCertView certView = null;
CERTADMINLib.IEnumCERTVIEWROW certViewRow = null;
CERTADMINLib.IEnumCERTVIEWCOLUMN certViewColumn = null;
int iColumnCount = 0;
object objValue = null;
string strID = "";
StreamWriter objFile = null;

// Connecting to the Certificate Authority
certView = new CERTADMINLib.CCertView();
certView.OpenConnection(strServer + "\\" + strCAName);

// Get a column count and place columns into the view
iColumnCount = certView.GetColumnCount(0);
certView.SetResultColumnCount(iColumnCount);

// Place each column in the view.
for (int x = 0; x < iColumnCount; x++)
{
certView.SetResultColumn(x);
}

// Open the View and reset the row position
certViewRow = certView.OpenView();
certViewRow.Reset();

// Enumerate Row and Column Information

// Rows (one per cert)
for (int x = 0; certViewRow.Next() != -1; x++)
{
// Columns with the info we need
certViewColumn = certViewRow.EnumCertViewColumn();
while (certViewColumn.Next() != -1)
{
switch (certViewColumn.GetDisplayName())
{
// Request ID
case "Request ID":
objValue = certViewColumn.GetValue(CV_OUT_BINARY);
if (objValue != null)
{
strID = "Request ID " + objValue.ToString();
}
break;

// Binary Certificate
case "Binary Certificate":
objValue = certViewColumn.GetValue(CV_OUT_BASE64HEADER);
if (objValue != null)
{
// Write certificate to file
objFile = File.CreateText(strPathForCerts + strID + ".cer");
objFile.Write(objValue.ToString());
objFile.Close();
}
break;

default:
break;
}
}
}

MessageBox.Show("We are done!\nCerts have been copied to " + strPathForCerts);

 

I hope this helps.

Regards,

 

Alex (Alejandro Campos Magencio)

  • Is it possible to export certificate in .pfx file from CA instead of .cert

Page 1 of 1 (1 items)
Leave a Comment
  • Please add 3 and 2 and type the answer here:
  • Post
Translate This Page