How to export issued certificates from a CA programatically (C#)
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)
Comments
- Anonymous
September 03, 2014
Is it possible to export certificate in .pfx file from CA instead of .cert