В попытке уточнить мой вопрос это третье переписывание.Вот сценарий в двух словах.
- Устаревший веб-сайт ASP / VBscript
- .NET / C # COM библиотека, которая используется на сайте ASP
Я хочу отправить Request.ClientCertificate («Сертификат») в необработанном виде в мою библиотеку COM .NET и декодировать его, чтобы я мог проверить поля по сертификату клиента в Active Directory.
- The Документация для Request.ClientCertificate ("Сертификат") говорит, что это строка двоичных данных, которая представляет сертификат в формате ASN.1.Мой метод .NET, который получает это, имеет строковый тип для параметра.Я пытался использовать Encoding.UTF8.GetBytes , Encoding.Unicode.GetBytes и Encoding.ASCII.GetBytes , чтобы преобразовать его в байт [], который X509Certificate2 ожидает конструктор.
Я пытался найти в Google все клочки информации, которые я могу найти о том, как сделать что-то полезное (например, декодировать)ASP Request.ClientCertificate в необработанном виде, но он пуст.Я также сохранил эти данные в файл и попытался декодировать их с помощью CertUtil, но он все равно не может декодировать данные и просто выдает ошибки.
Поскольку я продолжаю играть с этим, я решил взглянуть наразмер сертификата клиента, возвращенного ASP и ASP.NET, и я обнаружил, что размер не совпадает.Мой сертификат, поступивший из ASP, составлял 647 байт и 1295 байт в ASP.NET.Я не знаю, почему размер искажается между обеими средами.Следовательно, у меня нет проблем с декодированием сертификата клиента, возвращенного ASP.NET, с использованием класса X509Certicate2.
Я также пытался использовать следующую вызванную функцию p /:
[DllImport("crypt32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern uint CertCreateCertificateContext(uint dwCertEncodingType,
byte[] pbCertEncoded, uint cbCertEncoded);
Так что в любом случае использования X509Certificate, X509Certificate2 и функции, приведенной выше, я получаю согласованный результат, полученный от сертификатаASP не может использоваться этими функциями.Класс X509Certificate просто выдает исключение, когда я пытаюсь создать его с помощью байта [], представляющего сертификат.
Я пытался использовать библиотеку CAPICOM для импорта сертификата, но я получаю точно такое же исключение, что X509Certificate2класс дает мне.
Не удается найти запрошенный объект
Итак, в общем, я хочу декодировать ASP Request.ClientCertificate ("Certificate") из a.Библиотека NET / C # COM, использующая набор классов X509Certificate.