Пример создания запроса на сертификат средствами COM объекта X509Enrollment, отправка его на доменный центр сертификации при помощи COM объекта CertClient, получения и установки сертификата, получение и установки корневого сертификата.

Демонстрирует

Данный пример демонстрирует использование COM объектов X509Enrollment, CertClient.

Исходные тексты и собранные модули

Исходные тексты примера собраны в файле GenCert.zip, который устанавливается в подкаталог Examples CryptoPro .NET SDK, по умолчанию директория %ProgramFiles(x86)%\Crypto Pro\.NET SDK\Examples. Пример имеет реалимзацию на C# и Visual Basic. Для работы с примерами необходимо распаковать файл с исходными текстами примеров в рабочую директорию (не рекомендуется использовать поддиректории %ProgramFiles(x86)%\Crypto Pro\.NET SDK). Данный пример находится в подкаталоге DomainVista.

В состав КриптоПро .NET SDK входит собранная в Release версии из исходных текстов на C# в виде одной сборки исполняемый файл тестов GenCertDomainVistaCS.exe; данный файл может быть установлен в подкаталог Examples КриптоПро .NET SDK, по умолчанию директория %ProgramFiles(x86)%\Crypto Pro\.NET SDK\Examples. В эту же директорию будут установлены две сборки взаимодействия (Interop assembly) необходимые для запуска примера.

Как собрать пример

Для сборки примера необходимы две сборки взаимодействия (Interop assembly): Interop.CERTENROLLLib, Interop.CERTCLIENTLib. Есть несколько способов указать расположение этих сборок:

  • установить сборки, поставляемую с КриптоПро .NET SDK, в GAC;

  • отредактировать файл проекта, указав полные пути к сборкам, поставляемых с КриптоПро .NET SDK;

  • Изменить файл проекта, указав задачу на генерацию сборок взаимодействия, например:

     Copy imageCopy Code
    <COMReference Include="CERTENROLLLib">
        <Guid>{728AB348-217D-11DA-B2A4-000E7BBB2B09}</Guid>
        <VersionMajor>1</VersionMajor>
        <VersionMinor>0</VersionMinor>
        <Lcid>0</Lcid>
        <WrapperTool>tlbimp</WrapperTool>
        <Isolated>False</Isolated>
    </COMReference>
     Copy imageCopy Code
    <COMReference Include="CERTCLIENTLib">
        <Guid>{372FCE32-4324-11D0-8810-00A0C903B83C}</Guid>
        <VersionMajor>1</VersionMajor>
        <VersionMinor>0</VersionMinor>
        <Lcid>0</Lcid>
        <WrapperTool>tlbimp</WrapperTool>
        <Isolated>False</Isolated>
    </COMReference>

Сборка примера осуществляется вызовом msbuild из состава .Net Framework 2.0 или .Net Framework 3.5 или .Net Framework 4.0 c передачей соответствующего имени проекта, например, следующим образом:

%windir%\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe GenCertDomainVistaCS.20.csproj

Для сборки примера можно использовать Microsoft Visual Studio как через файл проекта, так и через файл решения (solution). Решения GenCertVistaCS.2005.sln и GenCertVistaVB.2005.sln или проекты с суффиксом .20 для Microsoft Visual Studio 2005; решения GenCertVistaCS.2008.sln и GenCertVistaVB.2008.sln или проекты с суффиксом .35 для Microsoft Visual Studio 2008; решения GenCertVistaCS.2010.sln и GenCertVistaVB.2010.sln или проекты с суффиксом .40 для Microsoft Visual Studio 2010.

Пример собирается в каталог bin\Debug для Debug конфигурации или в каталог bin\Release для Release конфигурации.

Как запустить пример

Для запуска данного примера необходимо настроить стандартный изолированный (Standalone) Microsoft центр сертификации, входящий в поставку серверных операционных систем Windows Server 2008 на автоматический выпуск российских сертификатов. Компьютер, с которого предполагается запуск примера, должен находится в том же домене, что и центра сертификации.

Запуск примера должен осуществляться с ОС Windows Vista или выше. В текущем каталоге (или в GAC) должны находится сборки взаимодействия (Interop Dll) на COM объекты CertEnroll и CertCli.

Запуск примера необходимо осуществлять из папки с собранным примером: bin\Debug для Debug конфигрурации или bin\Release для Release конфигрурации. Для запуска примера необходимо в командной строке передать имя запускаемого файла (GenCertDomainVista.exe) и URL адрес центра сертификации, в качестве параметера, например:

GenCertDomainVista.exe "TestCA\test-ca"

См. также