У меня есть автономный CA, и мне нужно получить полную строку base64 сертификата, используя поиск C# по серийному номеру сертификата.C# Получить сертификат из CA автономный
Уже пытались использовать X509Store, попытался с именем CA, CA-имя \ имя хоста, и все StoreName и StoreLocation возможные варианты
store = new X509Store("my-ca");
store.Open(OpenFlags.ReadOnly);
ret += "Count: " + store.Certificates.Count;
foreach (X509Certificate2 cert in store.Certificates)
{
ret += "cert.SerialNumber: " + cert.SerialNumber;
}
А также попытался с CCertView/CCertRequest, этот метод возвращает информацию, но это а не полный сертификат, строка не равна, когда я вручную экспортирую из ЦС.
public string GetCertificateBase64Original(string certificateSerialNumber)
{
string certificateBase64 = string.Empty;
try
{
CCertView certView = new CCertViewClass();
certView.OpenConnection(this.nameCA);
certView.SetResultColumnCount(2);
int requestIDColumnIndex = certView.GetColumnIndex(0, "RequestID");
int certificateSerialNumberColumnIndex = certView.GetColumnIndex(0, "SerialNumber");
certView.SetResultColumn(requestIDColumnIndex);
certView.SetResultColumn(certificateSerialNumberColumnIndex);
object objSerialNumber = certificateSerialNumber;
certView.SetRestriction(certificateSerialNumberColumnIndex, CVR_SEEK_EQ, CVR_SORT_NONE, ref objSerialNumber);
IEnumCERTVIEWROW rowsEnum;
rowsEnum = certView.OpenView();
IEnumCERTVIEWCOLUMN objCol;
rowsEnum.Reset();
int requestID = 0;
while (rowsEnum.Next() != -1)
{
objCol = rowsEnum.EnumCertViewColumn();
while (objCol.Next() != -1)
{
if (objCol.GetName() == "RequestID")
{
try
{
requestID = SafeConvert.ToInt(objCol.GetValue(PROPTYPE_STRING));
}
catch
{
}
}
}
}
if (requestID > 0)
{
CCertRequest certRequest = new CCertRequest();
certRequest.GetIssuedCertificate(this.nameCA, requestID, certificateSerialNumber);
certificateBase64 = SafeConvert.ToString(certRequest.GetFullResponseProperty(FR_PROP_FULLRESPONSE, 0, PROPTYPE_BINARY, CR_OUT_BASE64));
}
}
catch
{
}
return (certificateBase64);
}
Отсутствие успехов вообще.
Пожалуйста, начните с чтения [просить] и размещения [MCVE] –
Где ваш код работает по отношению к СА? – bartonjs
Добавлены образцы кода. @CamiloTerevinto –