Пример создания запроса на сертификат средствами COM объекта XEnroll, отправка его на доменный центр сертификации при помощи COM объекта CertCli, получения и установки сертификата, получение и установки корневого сертификата.
Демонстрирует
Данный пример демонстрирует использование COM объектов XEnroll, CertClient.
Исходные тексты и собранные модули
Исходные тексты примера собраны в файле GenCert.zip, который устанавливается в подкаталог Examples КриптоПро .NET SDK, по умолчанию директория %ProgramFiles(x86)%\Crypto Pro\.NET SDK\Examples. Пример имеет реалимзацию на C# и Visual Basic. Для работы с примерами необходимо распаковать файл с исходными текстами примеров в рабочую директорию (не рекомендуется использовать поддиректории %ProgramFiles(x86)%\Crypto Pro\.NET SDK). Данный пример находится в подкаталоге DomainXP.
В состав КриптоПро .NET SDK входит собранная в Release версии из исходных текстов на C# в виде одной сборки исполняемый файл тестов GenCertDomainXP.exe; данный файл может быть установлен в подкаталог Examples КриптоПро .NET SDK, по умолчанию директория %ProgramFiles(x86)%\Crypto Pro\.NET SDK\Examples. В эту же директорию будут установлены две сборки взаимодействия (Interop assembly) необходимые для запуска примера.
Как собрать пример
Для сборки примера необходимы две сборки взаимодействия (Interop assembly): Interop.XEnrollLib, Interop.CERTCLIENTLib. Есть несколько способов указать расположение этих сборок:
установить сборки, поставляемую с КриптоПро .NET SDK, в GAC;
отредактировать файл проекта, указав полные пути к сборкам, поставляемых с КриптоПро .NET SDK;
Изменить файл проекта, указав задачу на генерацию сборок взаимодействия, например:
Copy Code <COMReference Include="XENROLLLib"> <Guid>{5B9169C0-DB65-42AA-A38A-0726846AAEB3}</Guid> <VersionMajor>1</VersionMajor> <VersionMinor>0</VersionMinor> <Lcid>0</Lcid> <WrapperTool>tlbimp</WrapperTool> <Isolated>False</Isolated> </COMReference>
Copy 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 GenCertDomainXPCS.20.csproj
Для сборки примера можно использовать Microsoft Visual Studio как через файл проекта, так и через файл решения (solution). Решения GenCertXPCS.2005.sln и GenCertXPVB.2005.sln или проекты с суффиксом .20 для Microsoft Visual Studio 2005; решения GenCertXPCS.2008.sln и GenCertXPVB.2008.sln для или проекты с суффиксом .35 для Microsoft Visual Studio 2008; решения GenCertXPCS.2010.sln и GenCertXPVB.2010.sln для или проекты с суффиксом .40 для Microsoft Visual Studio 2010.
Пример собирается в каталог bin\Debug для Debug конфигурации или в каталог bin\Release для Release конфигурации.
Как запустить пример
Для запуска данного примера необходимо настроить стандартный изолированный (Standalone) Microsoft центр сертификации, входящий в поставку серверных операционных систем Windows Server 2000 или Windows Server 2003 или выше на автоматический выпуск российских сертификатов. Компьютер, с которого предполагается запуск примера, должен находится в том же домене, что и центра сертификации.
Запуск примера должен осуществляться с ОС Windows 2000, Windows XP или Windows 2003. Запуск с Windows Vista или выше не поддерживается. В текущем каталоге (или в GAC) должны находится сборки взаимодействия (Interop Dll) на COM объекты XEnroll и CertClient.
Запуск примера необходимо осуществлять из папки с собранным примером: bin\Debug для Debug конфигрурации или bin\Release для Release конфигрурации. Для запуска примера необходимо в командной строке передать имя запускаемого файла (GenCertDomainXP.exe) и URL адрес центра сертификации, в качестве параметера, например:
GenCertDomainXP.exe "TestCA\test-ca"